CakePHP2講座の9回目から

9. ビューの下にSQLが表示されるが、これはConfig/core.phpの"Configure::write('debug',2);"の2を0とすると消すことが可能。


10. 記事一覧をblog/postsではなく、blog/で表示できるように設定する:Config/routes.phpでRoute::connectの変更を行ない、controllerはposts、actionはindexにする。ヘッダー、フッターはView/Layouts/default.ctpに記述されている。自分が書いたところは、49行目あたりのfetch('content'); ?>に入る。PostControllerにて、$this->set('title_for_layout', '記事一覧');とすると、ページタイトルが「記事一覧となる」(下図)


11. findおよび、公式サイトのAPIドキュメントの使い方


12,13. 個別記事の詳細表示およびインデックスからリンクを貼る:view関数をPostsControllerに追加。view.ctpも追加。またindexからviewへのリンクを作るため、index.ctpではコントローラーに追加したHtmlヘルパーを使ってリンク作成。echo $this->Html->link('リンクテキスト', リンク先URL)という形。他にも元に戻る場所を追加するために、default.ctpを変更して"/"に戻るリンクをつけた。


14,15. 記事追加。addメソッドをコントローラーに追加、add.ctpを追加。add.ctpには必要最低限でやりたいことができるのがCakePHPのすごいところ。$this->Form->create('Post')……(Input項目を列挙)……$this->Form-end('Save Post')でPostするFormが作成できる。これはすごい。他には、$this->Session->setFlashなど。


16. Validation:Modelクラスのpublic $validateに配列で指定する。これはとても簡単で便利だ。CakePHPのドキュメント、BookのModel->Data Validationに詳細がある。


17. jQueryの導入:View/Layouts/default.ctpにjqueryを読み込ませ、setTimeout、fadeOutでメッセージを消した


18、19. 記事の編集:コントローラーにedit($id)メソッドを追加。$this->Post->id = $idとして、$this->request->data = $this->Post->read();とする。edit.ctpを追加。index.ctpに編集画面へのリンクを追加。


20、21.記事の削除:コントローラーにdeleteメソッドを追加。削除用の画面は不要なので、index.ctpに削除用フォームとそれにポストするリンクを追加。それは$this->Form->postLinkで可能。


22、23.削除処理のAjax化:JavaScriptで画面上の動的な削除を、ControllerでDBからの削除を行なう。$this->request->is('ajax') として判別する。このあたりどういう動きなのか全くわからないので要研究