🥯
機能追加
基本的にチュートリアルのまんまだからあまり書くことがない
記事の追加
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