ルーティングの基本
CakePHPのルーティングは、config/routes.phpで指定します。
基本的な内容については、下記の記事をご参照ください。
ルーティングでパラメータも指定する
やりたいこと
以下のurlを参照して・・・
https://”ドメイン”/dashboard/adcde
以下の関数を実行する。
//src/Controller/HogeController
<?php
class HogeController extends AppController
{
//https://"ドメイン"/dashboard/abcdeにアクセスすると・・・
//piyo()が実行される
//$palamには"abcde"が代入される。
public function piyo($palam = null)
{
}
}
つまり、以下の挙動にしたい。
●参照URL・・・https://”ドメイン”/dashboard/adcde
・パス1:”dashboard”・・・HogeControllerのpiyo()を実行する
・パス2:”abcde”・・・piyo()に渡されるパラメータ($palam)として指定する
コード
route.phpでurlを指定して、参照先にパラメータを待たすには以下のように指定します。
//config/routes.php
$builder->connect('/dashboard/:param', ['controller' => 'Hoge', 'action' => 'piyo'], ['pass' => ['palam']]);
//https://"ドメイン"/dashboard/abcdeでHogeControllerのpiyo()を実行する。
これで、「https://”ドメイン”/dashboard/adcde」というURLでHogeControllerの関数piyo()が実行されます。その際に、palam:”abcde”を渡します。
//src/Controller/HogeController
<?php
namespace App\Controller;
class HogeController extends AppController
{
//https://"ドメイン"/dashboard/abcdeでpiyo()が実行される
public function piyo($palam = null)
{
//$palamの値は、"abcde"
}
}
複数のパラメータを渡す
以下のように、複数のパラメータを渡すことも可能です。
//config/routes.php
$builder->connect('/dashboard/:param1/:param2', ['controller' => 'Hoge', 'action' => 'piyo'], ['pass' => ['param1', 'param2']]);
「https://”ドメイン”/dashboard/adcde/fghij」 で以下が実行される。
//src/Controller/HogeController
<?php
class HogeController extends AppController
{
public function piyo($palam1 = null,$palam2 = null)
{
}
}
参考
CakePHP 4.x Strawberry Cookbook:ルーティング
コメント