CakePHP怎么设置路由
更新时间:2023-12-161. 设置基础路由
在CakePHP中设置路由非常简单,我们只需要在config/routes.php文件中添加路由设置即可。下面是一个设置基础路由的例子:
// config/routes.php use Cake\Routing\RouteBuilder; use Cake\Routing\Router; Router::defaultRouteClass('DashedRoute'); Router::scope('/', function (RouteBuilder $routes) { // 提供默认的首页路由,访问 / 时会调用PagesController的display方法 $routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']); // 设置一个基础路由,访问 /hello 时会调用HelloController的index方法 $routes->connect('/hello', ['controller' => 'Hello', 'action' => 'index']); // ... });
2. 动态路由
在CakePHP中,我们可以通过使用占位符来设置动态路由。在路由的URL中加入占位符,当用户访问这个URL时,CakePHP会自动将占位符替换成相应的参数。下面是一个设置动态路由的例子:
// config/routes.php use Cake\Routing\RouteBuilder; use Cake\Routing\Router; Router::defaultRouteClass('DashedRoute'); Router::scope('/', function (RouteBuilder $routes) { // 提供默认的首页路由,访问 / 时会调用PagesController的display方法 $routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']); // 设置一个动态路由,访问 /users/{id} 时会调用UsersController的view方法, // id会作为参数传递给view方法 $routes->connect('/users/:id', ['controller' => 'Users', 'action' => 'view']) ->setPass(['id']); // ... });
3. 正则表达式路由
在CakePHP中,我们还可以使用正则表达式来设置路由策略,限制用户访问的路由路径。下面是一个设置正则表达式路由的例子:
// config/routes.php use Cake\Routing\RouteBuilder; use Cake\Routing\Router; Router::defaultRouteClass('DashedRoute'); Router::scope('/', function (RouteBuilder $routes) { // 提供默认的首页路由,访问 / 时会调用PagesController的display方法 $routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']); // 设置一个正则表达式路由,访问 /users/{id} 时会调用UsersController的view方法, // id必须为数字,否则返回404错误 $routes->connect('/users/:id', ['controller' => 'Users', 'action' => 'view'], ['id' => '\d+', 'pass' => ['id']] ); // ... });
4. 命名路由
在CakePHP中,我们还可以使用命名路由来指定路由的名称,并在代码中引用。这样做可以使我们的代码更加简洁,阅读性更好。下面是一个设置命名路由的例子:
// config/routes.php use Cake\Routing\RouteBuilder; use Cake\Routing\Router; Router::defaultRouteClass('DashedRoute'); Router::scope('/', function (RouteBuilder $routes) { // 提供默认的首页路由,访问 / 时会调用PagesController的display方法 $routes->connect('/', ['controller' => 'Pages', 'action' => 'display', 'home']); // 设置一个命名路由,引用时可以使用users_view方法名,访问 /users/{id} 时会调用UsersController的view方法, // id必须为数字,否则返回404错误 $routes->connect('/users/:id', ['controller' => 'Users', 'action' => 'view'], ['id' => '\d+', 'pass' => ['id']] )->setName('users_view'); // ... });总结:在CakePHP中,设置路由非常简单,我们可以通过config/routes.php文件来设置路由策略。在路由配置中,动态路由和正则表达式路由都极为常用,可以用来限制用户访问的路由路径。我们还可以使用命名路由来指定路由的名称,并在代码中使用,可以使我们的代码更加清晰简洁。