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

时间:2015-05-29 18:49:32

标签: cakephp-3.0

我正在使用cakephp 3.0,并希望在用户控制器中编写一些管理操作和一些用户操作。应该可以从管理员路由访问管理员操作,并且无需管理员路由即可访问用户操作

我知道在cakephp 3.0 for admin中,用户控制器应该在

SRC /控制器/管理/ UsersController.php

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

SRC /控制器/ UsersController.php

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

提前致谢。

2 个答案:

答案 0 :(得分:1)

您可以通过在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操作。通过这样做,您可以创建一组不同的操作和视图,以使它们更易于管理,同时将它们保存在一个位置。

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

答案 1 :(得分:0)

由于您的接入点与/ src / Controller / Admin / ControllerName和/ src / Controller / ControllerName不同,因此您可以同时使用ControllerName和ActionName。

假设您要在admin和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']);
}

希望它会让你明白。