在cakephp的许多Acl组件教程中,我得到了在AppController或继承AppController的所有其他控制器中添加组件的指令.......
但问题是
var $components=array('Auth',Acl);
Run Code Online (Sandbox Code Playgroud)
当我在AppConroller中使用上面的行时,我无法使用Auth或Acl组件...但是当我在所有子类中使用相同的代码时它工作得很好........
会是什么问题
这是我的appController
<?php
class AppController extends Controller {
var $helpers = array('Html', 'Form', 'Session','CssMenu');
var $components = array('Auth');
function beforeFilter() {
//Configure AuthComponent
$this->Auth->authorize = 'actions';
$this->Auth->authError = "Sorry, you are lacking access.";
$this->Auth->userModel = 'Login';
}
}
?>
Run Code Online (Sandbox Code Playgroud)
usersController的代码
<?php
class userssController extends AppController{
var $name="Logins";
//var $components = array('Auth');
var $layout='login';
function beforeFilter() {
parent::beforeFilter();
$this->Auth->allow('*');
$this->Auth->loginRedirect = array('controller' => 'homes', 'action' => 'index');
}
}
?>
Run Code Online (Sandbox Code Playgroud)
当我评论第4行时,这将是取消注释的错误,它提前工作正常
任何帮助将不胜感激.
我设法把它拉了下来.我有一对控制器共享一些方法,但应用程序中的其他控制器没有(也不能)使用这些方法,因为某些数据必须存在于模型中.此外,不应允许在URL中调用包含共享方法的控制器,这是一个额外的挑战.
在controllers文件夹中创建一个名为shared_controller.php的控制器.在其中定义一些共享方法,并确保它扩展AppController:
class SharedController extends AppController {
Run Code Online (Sandbox Code Playgroud)我的子控制器正在扩展AppController.更改此选项以扩展SharedController.我无法让共享控制器自动加载,所以我在上面添加了一个App :: import:
App::import('Controller', 'Shared');
class SubController extends SharedController {
Run Code Online (Sandbox Code Playgroud)必须手动将组件和帮助程序合并到其父变量中; 否则子类将覆盖它们.在每个子控制器中定义__construct方法,并在组件,帮助程序和其他任何内容上调用array_merge.最后调用父构造函数.注意:这不能在beforeFilter中完成
function __construct(){
$this->components = array_merge($this->components,array('Mycomponent'));
parent::__construct();
}
Run Code Online (Sandbox Code Playgroud)如果您调用http://example.com/shared/method,则可能会收到错误,指出您缺少数据库表或缺少视图.我不需要从Shared直接调用任何方法,所以我定义了一个只重定向到主页的路由:
Router::connect('/shared/*', array('controller' => 'pages', 'action' => 'display', 'home'));
Run Code Online (Sandbox Code Playgroud)希望有人帮助!
| 归档时间: |
|
| 查看次数: |
7476 次 |
| 最近记录: |