maymeow/cake-attribute-routing

MayMeow/Routing 插件用于 CakePHP

资助包维护!
MayMeow

安装: 0

依赖: 0

建议者: 1

安全: 0

星标: 0

关注者: 3

分支: 0

开放问题: 0

类型:cakephp-plugin

v0.2.0 2021-11-09 20:41 UTC

README

CakePHP 4.* 的属性路由

要求

  • CakePHP 4.x
  • PHP 8.x ⚠️ 此插件使用仅在 PHP 8 及更高版本中可用的功能。
  • 缓存(已测试与 redis),所有路由在可使用前都会被缓存。

安装

您可以使用 composer 将此插件安装到您的 CakePHP 应用程序中。

安装 composer 包的推荐方法是

composer require maymeow/cake-attribute-routing

并加载它。

php bin/cake.php plugin load MayMeow/Routing

配置

在应用程序配置中添加新的键 Controllers,并在其中提供您想要使用属性路由的控制器名称。

// app_local.php
'Controllers' => [
    \App\Controller\UsersController::class
]

使用方法

要定义路由,请向方法添加具有所需路径的属性 Route,如下所示

#[Route('/users')]
public function index()
{
    $users = $this->paginate($this->Users);

    $this->set(compact('users'));
}

通配符参数

有时您需要向您的操作传递参数,在这种情况下,您可以使用通配符路由。

#[Route('/users/edit/*')]
public function edit($id = null)
{
    $user = $this->Users->get($id, [
        'contain' => [],
    ]);
    // ...
}

⚠️ 如果您正在创建通配符路由,您必须在子路径中定义所有其他路由器。

命名参数

您可以使用命名参数而不是通配符。当您想向控制器的操作传递多个参数时,这将很有用。

#[Route('/users/:id/details', options: ['id' => '\d+', 'pass' => ['id']])]
public function view($id = null)
{
    $user = $this->Users->get($id, [
        'contain' => [],
    ]);

    $this->set(compact('user'));
}

当您使用命名参数创建路由时,您必须传递选项来告知路由器您想要传递哪些参数到控制器。

控制器操作的路径 Controller::action 会自动从控制器类名和方法名生成;

故障排除

此插件使用缓存进行路由:所有路由在使用前都需要进行缓存。如果您在路由方面遇到问题,请尝试清除缓存。

发现错误?或者您想要新功能?打开新问题 https://github.com/MayMeow/cake-attribute-routing/issues

许可 MIT