c语言编程笔录

首页 >   > 笔记大全

笔记大全

CakePHP怎么设置路由

更新时间:2023-12-16
CakePHP设置路由

1. 设置基础路由

在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文件来设置路由策略。在路由配置中,动态路由和正则表达式路由都极为常用,可以用来限制用户访问的路由路径。我们还可以使用命名路由来指定路由的名称,并在代码中使用,可以使我们的代码更加清晰简洁。