Archive for 11月, 2007
CakePHP 静的なページの作成方法
2CakePHP で静的なページを作成する方法です。
正確には CakePHP が出力するページなので静的ではなく動的なのですが、ページを簡単に作成することができます。
- 出力するページをテンプレートとして /views/pages/ ディレクトリ以下に作成します。
- 作成したテンプレートが hoge.thtml だとすると http://exmaple.com/pages/hoge でアクセスできます。
これだけで簡単にページを追加することができます。
コンテンツは静的なものですが、ビューなので例えばログイン状態によって表示を変更したりなどできますね。
なぜ /pages/hoge でアクセスできるかというと /app/config/routes.php で
$Route->connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));
と定義されているからです。
pages_controller.php は /cake/libs/controller/pages_controller.php にあります。
上のルーティングで pages コントローラへのアクセスは全て pages コントローラの display アクションに渡されます。
また、/views/pages/hoge/foo/fuga.thtml というテンプレートを作成すると
http://example.com/pages/hoge/foo/fuga という URL でアクセスすることができます。
ちなみにページタイトルはテンプレートの名前が title タグに入れられます。
タイトルを指定する場合は
<? $this->pageTitle = 'ここにタイトルを指定する'; ?>
とビューでタイトルを指定します。
参考サイト:21 things I learned about CakePHP – Avatar Financial Group
Firefox タブを新しいウィンドウで開くTab Mix Plus のショートカット Ctrl + Shift+ N
1Going My Way: 今開いているタブを新しいウィンドウで開く、Tab Mix Plus のショートカット Ctrl + Shift+ N
Going My Way さんで紹介されていた Firefox で現在開いているタブを新しいウィンドウで開くショートカットが紹介されていました。
Tax Mix Plus が必要ですが、Ctrl + Shift + N で出来ます。
これやりたいことが多かったです。
いつもCtrl + N で新しいウィンドウを開いてから URL をコピペしてました。。。
CakePHP select タグの選択していないときの状態を指定する
0Cute CakePHP Trick of the Day – GenerateList Empty Slot In List | Web Development 2.0: Web Design, CakePHP, Javascript
で select タグの選択していないときの状態の値を指定する方法が書かれていますが、この方法は間違っています。
元のエントリのコメントでも指摘されていますが、ヘルパーのメソッドの使い方が違います。コードを実際に書いて検証してみれば、動かないのがすぐに分かります。
元の紹介されている方法はそもそも PHP の文法的におかしいのでそこは適当に修正して紹介します。(変数名に $ がなかったり、generateList() を出力をどこにも保存していないかったりします。)
コントローラで下記のように generateList でリストを取得して
$state_id = $this->State->generateList();
ビューで
echo $form->input($state_id, array('empty' => '--'));
と紹介されています。
CakePHP1.1 の Formヘルパーには input メソッドがないので CakePHP 1.2 でのやり方だと思いますが、実際に Form ヘルパーの input メソッドは
function input($fieldName, $options = array())
と定義されています。上記のように書くと
で、実際にはどう書けばいいかというと
echo $form->input('Model/Field', array('empty'=>'---', 'type'=>'select', 'options'=>$state_list));
または、
echo $form->select('Model/Field', $state_list, null, null, array('empty'=>'---'));
と書けば select タグの先頭に
<option value=''>---</option>
と入ります。
CakePHP1.1 では 「CakePHP HTMLヘルパーで select タグを表示する」のエントリで書いたように結構面倒だったので新しい Form ヘルパーは使いやすいですね。
10月に読んだ本
1先月少なかった分、今月は結構読めました。