CakePHP ブログチュートリアル手順まとめ3

      2017/07/12

公式のブログチュートリアルを参考にブログ作ってみるその3。今回は一番やりたかったツリーカテゴリーのとこになるので省略せずに頑張る。(探せなかったけど前回みたいにbakeでちょちょいみたいに楽できるページがあるのだろうか。)

ツリーカテゴリーの作成

もし articles テーブルが既にデータベースに存在する場合、削除してください。

とのことだったので、テーブルをさくっと削除。

composer.jsonにマイグレーションプラグインを追加

コマンドプロンプトはあらかじめcdでblogにしておく。
頭がC:\xampp\htdocs\blog> って感じ。私Cドライブじゃないからそこだけ間違えないメモ。


blog/composer.jsonにMigrationsがあるかをチェックする。
なかったら追加する。

composer require cakephp\migrations

bootstrap.phpファイルにPlugin::load('Migrations'); を追加

bin\cake plugin load Migrations

とすると、config/bootstrap.phpファイル内に

Plugin::load('Migrations');

がファイル下部に追加される。

(※画像は手動でいれたやつ^^;)

マイグレーションファイルを作成

bin\cake bake migration CreateArticles title:string body:text category_id:integer created modified


できてる。

categories テーブル

bin\cake bake migration CreateCategories parent_id:integer lft:integer[10] rght:integer[10] name:string[100] description:string created modified

blog/config/Migrationsフォルダ内にファイルができてる。

CreateCategories.phpのparent_id フィールドを 'null' => false を 'null' => true に変更しておく。

テーブルを作る

下記のコードでテーブルを作ることができるらしい。

bin\cake migrations migrate


おお、できてる!

Articles と Categories テーブルとを結びつける

src/Model/Table/ArticlesTable.phpに下記追加。

        $this->belongsTo('Categories', [
            'foreignKey' => 'category_id',
        ]);

bakeを利用してCategoriesのファイルを作成する

bin\cake bake all Categories

ファイルの修正

src/Template/Categories/ add.ctp
src/Template/Categories/ edit.ctpを修正する。

echo $this->Form->control('parent_id', [
    'options' => $parentCategories,
    'empty' => 'No parent category'
]);

TreeBehavior を Categories テーブルに追加

コメントの中のbake は lft 列と rght 列が存在するあらゆるテーブルにこのビヘイビアーを追加します。は大事なトコなので覚えるメモ。
TreeBehavior を Categories テーブルに追加にある修正箇所は今回のバージョンでは治っていますね。作業の必要なさそう。

ここからはソースの修正になるので、参考ページのソースをガシガシいれていく。

TreeBehavior でカテゴリーを並べ替える

blog/src/Controller CategoriesController.php
参考ページをもとに、index メソッドの箇所の修正、とmoveUp() および moveDown() メソッドを追加する。
blog/src/Template/Categories index.ctp も修正する。

Articles コントローラーを編集する

blog/src/Controller ArticlesController.php
参考ページをもとに、カテゴリーの一覧を追加するコードを記述する。
add()、edit()メソッドを修正

Articles テンプレートを編集する

blog/src/Template/Articles add.php edit.php
カテゴリーのコントロールを追加する。

修正後の各種画面

カテゴリー

http://localhost/blog/categories

http://localhost/blog/categories/add

親をつくってみた。


更に子カテゴリをつくってみる。


登録完了

アーカイブ

http://localhost/blog/archives

http://localhost/blog/archives/add


カテゴリのとこはこんな感じ。

 - CakePHP