🥯

機能追加

2023/11/22に公開

基本的にチュートリアルのまんまだからあまり書くことがない

記事の追加

ArticlesController.phpにaddメソッドを追記してadd.phpを作る
publishカラムに触れてないのとbakeコマンドでファイルを作ると勝手にバリデーションが設定されるのが注意ポイントだと思う。
バリデーションはsrc/Model/Table/ArticlesTable.phpで定義する。

ArticlesController.php
$article->published = true;

addメソッドにとりあえずこいつを追加する

editアクションの追加

特になし
チュートリアル通り

deleteアクションの追加

Tagsモデルが無い為エラー吐く
とりあえずモデルだけ作っておけばちゃんと動く

docker-compose exec web bash
bin/cake bake model tags
#間違ってtagsの頭を小文字にしてしまったが勝手に修正してくれた。気が利く。

なんでそうなるかというとinitalizeメソッドで関連付けを定義してるから

ArticlesController.php
    public function initialize(array $config): void
    {
        parent::initialize($config);

        $this->setTable('articles');
        $this->setDisplayField('title');
        $this->setPrimaryKey('id');

        $this->addBehavior('Timestamp');

        $this->belongsTo('Users', [
            'foreignKey' => 'user_id',
            'joinType' => 'INNER',
        ]);
        $this->belongsToMany('Tags', [
            'foreignKey' => 'article_id',
            'targetForeignKey' => 'tag_id',
            'joinTable' => 'articles_tags',
        ]);
    }

bakeコマンドは便利だがどこに何を書いたファイルを作るのか把握するようにしよう。

Discussion