Search code examples
phpcakephpacl

cake php AppController and inheritance


In many tutorial of Acl component in cakephp i got instruction that add component either in AppController or in all the other controllers which inherits AppController.......

but problem is

var $components=array('Auth',Acl);

when i use the above line in AppConroller i cant use the Auth or Acl component... but when i use the same code in all the child classes it works fine........

what will be the problem

here is my 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';
}

}
?>

code for 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');
    }
}
?>

when i comment the line 4 this will b error on uncomment it works fine thanks in advance

any help will be appreciated.


Solution

  • I think there may be something wrong in your code.If you add the line in /app/cake/libs/controller/app_controller.php,every child class should be able to use the components.See about app_controller in cookbook:

    CakePHP merges the following variables from the AppController to your application's controllers:$components,$helpers,$uses

    EDit @deceze

    you may write your own customized base controller in /app/yourown_app_controller.php

    class YourOwnAppController extends Controller
    {
           var $components = array("Auth");
    }
    

    then use it by a requirment like require_once(APP."yourown_app_controller.php"); in the child contrller file.