CakePHP项目中的管理面板/界面

时间:2013-11-01 16:04:52

标签: cakephp admin

我想在我的一个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更好?我的错是什么?

由于

1 个答案:

答案 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
      }
}