我想在我的一个CakePHP项目中创建一个“管理面板/界面”。你知道它在现代网站中很常见。起初,我计划为此创建一个插件,并尝试这样做。它不起作用,不明白为什么,我稍后会请求帮助。但是,接下来我看到CakePHP已经使用“Scafolding”提供了这个功能。我现在正在尝试这个,但不知道为什么它不像我预期的那样工作。这是我做的:
app/config/core.php :
---------------------
.
.
.
Configure::write('Routing.prefixes',array('admin'));
.
.
.
app/Controller/AppController.php :
----------------------------------
.
.
.
public $components=array(
'Session',
'Auth'=>array(
'loginRedirect'=>array('admin'=>true,'controller'=>'home','action'=>'index'),
'logoutRedirect'=>array('controller'=>'home','action'=>'index'),
'authorize'=>array('Controller')
)
);
.
.
.
我想,管理员面板应该有一个单独的控制器,这就是我创建它的原因:
app/Controller/AdminsController.php :
-------------------------------------
<?php
App::uses('AppController','Controller');
class AdminsController extends AppController{
public $name='Admins';
public $scaffold='admin';
}
但它没有用。所以,我认为CakePHP为所有单独的控制器提供了这个功能;我的意思是,我认为我应该为所有单独的控制器设置管理面板,而不是作为不同的模块/控制器/子系统。所以,我改变了一个现有的控制器“Controllers1”:
<?php
App::uses('AppController','Controller');
class Controllers1Controller extends AppController{
public $name='Controllers1';
public $scaffold='admin';
}
然后尝试转到此网址:my_site/admin/jobs/view
但结果仍然相同。
请给我一个建议,我该怎么办?我应该为“管理面板”创建一个新插件,还是Scafolding更好?我的错是什么?
由于
答案 0 :(得分:1)
AdminsController不需要使用admin前缀,您需要做的就是像您已经做的那样定义Routing.Prefixes。
Configure::write('Routing.prefixes',array('admin'));
对于您提到的JobsController示例,您需要做的就是:
<?php
App::uses('AppController', 'Controller');
class JobsController extends AppController {
public $scaffold = 'admin';
}
因为使路由前缀工作的方法是使用前缀声明方法,而不是使用其他控制器:
<?php
App::uses('AppController', 'Controller');
class ArticlesController extends AppController {
function admin_index() {
//This method can be found under /admin/articles
}
}