cakephp 3.0 管理员和用户的控制器名称相同

cakephp 3.0 same controller name for admin and users

我正在使用 cakephp 3.0 并想在用户控制器中编写一些管理操作和一些用户操作。管理操作应该可以从管理路由访问,用户操作应该可以在没有管理路由的情况下访问

我知道在 cakephp 3.0 中用于管理员,用户控制器应该在

src/Controller/Admin/UsersController.php

对于普通用户,用户控制器应该在

src/Controller/UsersController.php

现在的困惑是, 将相同的控制器名称放在 2 个不同的目录中是否正确,还是我遗漏了什么?

提前致谢。

由于您的访问点与 /src/Controller/Admin/ControllerName 和 /src/Controller/ControllerName 不同,您可以同时使用 ControllerName 和 ActionName 保持不变。

假设您想在管理和 public 部分中创建一个 UsersController。您还想在控制器中创建一个 actionName。就像:

//Name it in Admin Directory  /src/Controller/Admin/UsersController.php
public function index()
{
    $this->layout = 'admin_default';
    $this->set('users', $this->paginate($this->Users));
    $this->set('_serialize', ['users']);
}

//Name it in Public Directory  /src/Controller/UsersController.php
public function index()
{
    $this->set('users', $this->paginate($this->Users));
    $this->set('_serialize', ['users']);
}

希望能让你明白。

您可以通过在 routes.php 文件中定义路由来将它们保存在同一个 UsersController 中,如下所示:

// Connect routes for admin prefix.
Router::connect(
    'admin/users',
    ['plugin' => false, 'controller' => 'Users', 'action' => 'adminIndex']
);
Router::connect(
    'admin/users/:action/*',
    ['plugin' => false, 'controller' => 'Users']
);

如果您在上面的代码中注意到,我已经为管理索引操作指定了 adminIndex 操作。通过这样做,您可以创建一组不同的操作和视图,使它们更易于管理,同时将它们放在一个地方。

对于较大的应用程序,最好将管理区域与前端区域分开。毕竟这是你的选择。