2011年11月29日火曜日

CakePHPによる実践Webアプリケーション開発

バージョンによる違いで時間を浪費

書籍では1.2の環境で行われているため、バージョンの違いによる変更箇所で時間を浪費する。
書籍とおりに行ってみて動かない場合は、ほぼバージョンアップによる変更があった機能である。(※しかし、コーディングミスもままあるけど..「('ヘ`;\ )

Html->link()

(1.2)
 $html->link($title, $url, $htmlAttributes, $confirmMessage, $escapeTitle)
   ↓
(1.3)
 $html->link($title, $url, $options, $confirmMessage)
上記のように変更になった。

リンクの付いた画像をHtmlヘルパーで表示する方法も下記のような変わる。
(1.2)
 $html->link($html->image('sample.png'),array('action' => 'hoge'), null, null, false);
 ※1.2では、linkの内容でimgのようなhtmlタグを出力する場合は、5つ目のパラメータをfalseにする。
   ↓
(1.3)
 $html->link($html->image('sample.png'), $url, array('escape' => false));
 ※1.3では、$options['escape']のようにしてエスケープしてimgタグを出力する。

2011年11月27日日曜日

CakePHPによる実践Webアプリケーション開発

CAKEPHP 1.3.11
下記の実行部分でエラーになってしまい対応できないでいた。
$session->flash();
$session->flash('auth');
↓ app_controller.phpで下記を設定することで解決した。
var $helpers = array('Session');
上記の解決に至ったのは、下記のサイトのおかげです。
http://stackoverflow.com/questions/8165192/cakephp-2-0-3-fatal-error-flash-on-object

内容は下記のとおりです。
Make sure you've added the Session helper to your public $helpers array.
class SomethingsController extends AppController {
    public $helpers = array('Session');
}
Or you could add it to a global AppController so that the Session helper is available to all controllers.
class AppController extends Controller {
    public $helpers = array('Session');
}
ネットで調べても日本語サイトの解決策がなかなかでてこないのでないので、仕方なく海外のサイトを確認して解決に至りました。

きっと、こんな簡単な内容はあまりネットに掲載しないのかなぁ...

cakephp 初心者の私には、大変助かりました。

2011年11月15日火曜日

Oracle の制約名を確認する。

Oracleの制約名を確認するには、user_constraints を検索(SELECT)すれば良いのだが、いつも困るのはsql worksheet(またはsqlplus)等で検索すると3番目の項目名欄が1文字しか表示されないので、3番目の項目で選択する際に項目名がわからずに困ってしまう。
3番目の項目名は、CONSTRAINT_TYPE列です。 C しか表示されないので困ってします。
この列は、下記のような値になっています。

  • C(表でのチェック制約)
  • P(主キー)
  • U(一意のキー)
  • R(参照整合性)
  • V(ビューでのチェック・オプション付き)
  • O(ビューで読取り専用)

2011年11月1日火曜日

CakePHPによる実践Webアプリケーション開発

書籍の内容と実際では異なる件について書き留めます。

■データソースからデータを検索

条件を満たすデータ件数を取得する。
(1.1 1.2 まで)
$this->User->findCount()
  ↓(下記のようになる)
(1.3以降)
$this->User->find('count')
※コマンドの詳細についてはマニュアルを参照して下さい。

■ログイン認証について

Authコンポーネントの利用条件
DIVでのレイアウト確認を行っています。 テスト

すべてをまとめて掲載しようと思っていたが、思うように時間が取れなかったり、cakephpが未熟なため思うように捗らなかったりするので、都度掲載していくようにする。

CakePHPによる実践Webアプリケーション開発

マシントラブルによる再インストールや繁忙な日々が続いていたため、すっかりCakePHPをご無沙汰してしまったので、再度「CakePHPによる実践Webアプリケーション開発」を学習して悩んだ点を書き綴ります。

名前付きパラメータ

以前、途中まで行ったのである程度は理解しているが、この書籍のが間違っているのか? それともCakePHPにのバージョン違い(書籍では1.2、現在は1.3.11が安定版・・・2.0もリリースされてますね。)のせいなのか、思い通りに動作しない点がいくつからあり困惑する。
書籍では、:id という名前付きパラメータをフル活用されているが、バージョン1.3では :id はデフォルトの名前付きパラメータではないため思い通りの動作が実現しない。もしかするとRoutesを設定すると可能なのかもしれないが、Routesを自由に扱えるような上級者でもないので、:id を無視してソースを変更して対応する。
(変更前)
$out = $this->Html->link($out, array('action'=>'edit', 'id'=>$schedule['Schedule']['id']));
      ↓
(変更後) 
$out = $this->Html->link($out, array('action'=>'edit', $schedule['Schedule']['id']));
というように変更して対応しました。
「CakePHPによる実践Webアプリケーション開発」のサポートサイトにも上記の件の問い合わせがありましたが、筆者はデフォルトで使用できるとの旨の解答でした。(バージョンの違いについては言及されていなかったためなのかなぁ?)

ほかにも悩んだ点がありますが、ボチボチと掲載していきます。