0

我想在我的一个 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';
    }

然后尝试访问此 URL:my_site/admin/jobs/view 但结果仍然相同。

请给我一个建议,我该怎么办?我应该为“管理面板”创建一个新插件,还是脚手架更好?我的错是什么?

谢谢

4

1 回答 1

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
      }
}
于 2013-11-01T17:13:08.833 回答