『CakePHP』を使ってみる 〜5〜 バージョン 1.2 ベータを導入
リファレンスの付録である『Cake ブログチュートリアル』をやってみることに。
バージョン 1.2 ベータを導入
現在の Stable のバージョンは 1.1.19.6305。
1.2ベータの方は 1.2.0.6311。
『Ethna』を使い始めた時は、安定版の 2.1 系を選んでいたら2.3系が正式リリースされて使い勝手が全く変わってしまったということがあった。
そういうのはちょっとイヤなので、最近はだいたい新しい方を選んでみることにしている。
導入に関しては特に問題なし。モデルとかコントローラは公開ディレクトリ外に置くようにした。
1.2 はフォーム周りの仕様が変わっていた
『A.10. データバリデーション』のページのコードを入力してページにアクセスしたら警告メッセージが出た。
Notice (1024): Method input() is deprecated in HtmlHelper: see FormHelper::input or FormHelper::text [CORE/cake/libs/view/helpers/html.php, line 735]
Notice (1024): Method textarea() is deprecated in HtmlHelper: see FormHelper::input or FormHelper::textarea [CORE/cake/libs/view/helpers/html.php, line 659]
Warning (512): Method HtmlHelper::submit does not exist [CORE/cake/libs/view/helper.php, line 148]
調べてみると 1.2 からは HTMLヘルパーで form 周りを作るのは推奨されないらしい。
代わりに FORM ヘルパーというものが用意されているとのこと。
[1.1系] A.8. /app/views/posts/add.thtml
<form method="post" action="<?php echo $html->url('/posts/add')?>"> <p> タイトル: <?php echo $html->input('Post/title', array('size' => '40'))?> <?php echo $html->tagErrorMsg('Post/title', 'タイトルは必ず入力してください。') ?> </p> <p> 本文: <?php echo $html->textarea('Post/body', array('rows'=>'10')) ?> <?php echo $html->tagErrorMsg('Post/body', '本文は必ず入力してください。') ?> </p> <p> <?php echo $html->submit('保存') ?> </p> </form>
↓1.2系だとこうなる。
[1.2系] A.8. /app/views/posts/add.thtml
<?php echo $form->create("Post", array("action" => "add" ))?> <p>タイトル: <?php echo $form->input('Post/title',array( 'error' => array( 'required' => 'タイトルは必ず入力してください。' ), 'size' => 40)) ?> </p> <p>本文: <?php echo $form->input('Post/body', array( 'error' => array( 'required' => '本文は必ず入力してください。' ), 'rows' => 10, 'type' => 'textarea'))?> </p> <?php echo $form->end("保存")?>
[1.1系] A.9. /app/models/post.php
<?php class Post extends AppModel { var $name = 'Post'; var $validate = array( 'title' => VALID_NOT_EMPTY, 'body' => VALID_NOT_EMPTY ); } ?>
[1.2系] A.9. /app/models/post.php
<?php class Post extends AppModel { var $name = "Post"; var $validate = array( 'title' => array('required' => VALID_NOT_EMPTY), 'body' => array('required' => VALID_NOT_EMPTY), ); } ?>
1.2 からは model で条件を書きやすくなっているみたい。
『Ethna』もこんなカンジだったなあ。
以下のページでまとめられていたのでメモ。参考になります。
なんかコードがずれてるなあ…