CakePHP

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

公式のブログチュートリアルを参考にブログ作ってみるその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