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と同じ)ので参考にしてください。