CakePHP 3:管理插件和路由
CakePHP 3: Admin Plugin & Routing
为了迁移到cakephp 3,掌握在这个版本的框架上做应用的技巧,我只烤了app和plugin。
我想在插件、管理、客户等中分离 Web 应用程序
我可以访问插件中的位置,例如 myapp/admin/users、myapp/admin/,但是如果我尝试访问 url myapp/admin(没有最后的斜杠)我必须重定向位置 myapp/webroot/admin/.
在myapp/webroot/我有一个名为admin的主题文件夹,我试图在admintheme中更改名称,但仍然有一个重定向。
如何解决?
谢谢。
这适用于 cakephp 3.1.2
第 1 步:将 admin
前缀的路由设置为高于正常 /
// 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 ...
第 2 步:在您的 Controllers 文件夹中创建一个名为 Admin 的文件夹
将适当的控制器转储到那里。
Controller
|
|------Admin
| |
| |----- AppController.php
| |---- ProductsController.php // this handles all the admin actions
|
|----- ProductsController.php // this handles the non-prefix actions
第 3 步:确保 Admin 文件夹中的所有控制器都使用命名空间 namespace App\Controller\Admin;
第 4 步:使 Admin 文件夹内的所有控制器扩展 AppController 在 Admin 文件夹内
第 5 步:将此添加到 App/Controller/Admin/AppController
的 beforeFilter
public function beforeFilter(Event $event)
{
$this->viewBuilder()->theme('AppUI'); // AppUI is my plugin name
$this->viewBuilder()->layout('AppUI.backend');
}
为什么这有效?
因为主题现在应该是一个插件。参见 http://book.cakephp.org/3.0/en/views/themes.html#themes
我引用
Themes in CakePHP are simply plugins that focus on providing template
files.
像这样:
plugins
|
|------AppUI
| |
| |----- src
| |
| |---- Template
| |---- Layout
| |---- backend.ctp
为了迁移到cakephp 3,掌握在这个版本的框架上做应用的技巧,我只烤了app和plugin。
我想在插件、管理、客户等中分离 Web 应用程序
我可以访问插件中的位置,例如 myapp/admin/users、myapp/admin/,但是如果我尝试访问 url myapp/admin(没有最后的斜杠)我必须重定向位置 myapp/webroot/admin/.
在myapp/webroot/我有一个名为admin的主题文件夹,我试图在admintheme中更改名称,但仍然有一个重定向。
如何解决?
谢谢。
这适用于 cakephp 3.1.2
第 1 步:将 admin
前缀的路由设置为高于正常 /
// 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 ...
第 2 步:在您的 Controllers 文件夹中创建一个名为 Admin 的文件夹
将适当的控制器转储到那里。
Controller
|
|------Admin
| |
| |----- AppController.php
| |---- ProductsController.php // this handles all the admin actions
|
|----- ProductsController.php // this handles the non-prefix actions
第 3 步:确保 Admin 文件夹中的所有控制器都使用命名空间 namespace App\Controller\Admin;
第 4 步:使 Admin 文件夹内的所有控制器扩展 AppController 在 Admin 文件夹内
第 5 步:将此添加到 App/Controller/Admin/AppController
的 beforeFilterpublic function beforeFilter(Event $event)
{
$this->viewBuilder()->theme('AppUI'); // AppUI is my plugin name
$this->viewBuilder()->layout('AppUI.backend');
}
为什么这有效?
因为主题现在应该是一个插件。参见 http://book.cakephp.org/3.0/en/views/themes.html#themes
我引用
Themes in CakePHP are simply plugins that focus on providing template files.
像这样:
plugins
|
|------AppUI
| |
| |----- src
| |
| |---- Template
| |---- Layout
| |---- backend.ctp