helperなどでのURL指定方法の命名規則

CakePHP

CakePHP4でprefixを出したくてこんな感じに書いたらエラーになりました。

$this->Url('link-title', [ 'prefix' =>'api', 'controller' =>'Hoges', 'action' => 'actionName' ]); 

エラー内容

 A route matching "array ( 'prefix' => 'api', 'controller' => 'hoge-hoges', 'action' => 'actionName', 'plugin' => NULL, '_ext' => NULL, )" could not be found.

命名規則がまずかったようです。

今回の場合

'prefix'='Api',

と書かなければならないようです。パスカルケースですね。
CakePHPの命名規則は一貫性がなくていまいち覚えられません。
CakeBookからの引用です(一部修正)

$this->Html->link(‘link-title’, [
‘prefix’ => ‘MyPrefix’, // パスカルケース
‘plugin’ => ‘MyPlugin’, // パスカルケース
‘controller’ => ‘ControllerName’, // パスカルケース(複数形)ex. Users
‘action’ => ‘actionName’ // キャメルバック
]);

でもでも、コントローラー名はパスカルケースにしろとは書いてありますが、実はスネークケース(全部小文字でワード間はアンダーバー=テーブル名と同じ)でも通っちゃうんですよね。なんでprefixだけ厳しいんだよ。
しかも出力はケバブケース(スネークケースのアンダーバーをハイフンにしたやつ)なんでもう分けわかめの状態です。(ケバブケースでもいいっぽい)
また、アクション名はキャメルバック/ローワーキャメルケース/キャメルケース(1ワード目の先頭が小文字で、2ワード目以降は先頭が大文字)というまた違う方法です。

そのほかについてもCakePHP3時代ですが下記にまとめてあります(基本はCakePHP4と同じ)ので参考にしてください。

タイトルとURLをコピーしました