CakePHP 3:Admin插件&路由

时间:2015-04-03 14:29:14

标签: cakephp cakephp-3.0

为了迁移到cakephp 3并掌握在这个版本的框架上创建应用程序的技能,我刚刚编写了应用程序和插件。

我想在插件,管理员,客户等中分离Web应用程序

我可以访问插件中的位置,例如myapp / admin / users,myapp / admin /,但是如果我尝试访问url myapp / admin(最后没有斜线)我有重定向位置myapp / webroot / admin /.

在myapp / webroot /我有一个名为admin的主题文件夹,我试图在admintheme中更改名称,但仍然有重定向。

如何解决这个问题?

谢谢。

1 个答案:

答案 0 :(得分:7)

这适用于cakephp 3.1.2

第1步:将/前缀的路由设置为高于正常// code ... // for prefix admin Router::prefix('admin', function ($routes) { // All routes here will be prefixed with `/admin` // And have the prefix => admin route element added. $routes->fallbacks('InflectedRoute'); }); // for the non-prefix routes Router::scope('/', function ($routes) { // more code ...

 Controller
    |
    |------Admin
    |        |
    |        |----- AppController.php
    |        |---- ProductsController.php // this handles all the admin actions  
    |        
    |----- ProductsController.php // this handles the  non-prefix actions        

步骤2:在Controllers文件夹中创建一个名为Admin的文件夹

将适当的控制器转储到那里。

namespace App\Controller\Admin;

步骤3:确保Admin文件夹中的所有控制器都使用命名空间public function beforeFilter(Event $event) { $this->viewBuilder()->theme('AppUI'); // AppUI is my plugin name $this->viewBuilder()->layout('AppUI.backend'); }

步骤4:让Admin文件夹中的所有控制器扩展AppController 里面 Admin文件夹

步骤5:在您的beforeFilter for App / Controller / Admin / AppController中添加它

 plugins
    |
    |------AppUI
    |        |
    |        |----- src
             |        |
             |        |---- Template
                      |        |---- Layout
                               |        |---- backend.ctp

为什么会这样?

因为主题现在应该是一个插件。见http://book.cakephp.org/3.0/en/views/themes.html#themes

我引用

  

CakePHP中的主题只是插件,专注于提供模板   文件。

像这样:

{}