ルーティング(URL・パスの指定)その2 〜アクションにパラメータを渡す〜【CakePHP4】

ルーティングの基本

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ルーティング

コメント

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