You can do this by using the cake console... but here is some code that I use to automatically do it for you.
Put this is your AppContoller...
/*
*
* Used for Adding Aco action automatically on page load.
*
* Designed for use in development and deployment.
* Call from beforeFilter in new controller and access each controller method via a web browser,
* then remove from controller code, once you have everything initiated.
*
*/
function _initAco(){
// Get Action from Auth Component
$pathparts = explode('/',$this->Auth->action());
$path = '';
// Loops through the pieces of the path and adds them if necessary
foreach($pathparts as $key => $item){
$path .= $item;
$node = $this->Acl->Aco->node($path);
if(!$node && !isset($currentParent)){
$controllers = $this->Acl->Aco->node('controllers');
$currentParent = $controllers[0]['Aco'];
}
if($node){
$currentParent = $node[0]['Aco'];
}else{
$this->Acl->Aco->create(array(
'parent_id' => $currentParent['id'],
'model' => null, 'alias' => $pathparts[$key]
));
$node = $this->Acl->Aco->save();
$currentParent = array('id' => $this->Acl->Aco->id, 'alias' => $node['Aco']['alias']);
};
$path .= '/';
}
}
Then add $this->_initAco(); to the beforeFilter of the controller you are working on.
function beforeFilter(){
$this->_initAco();
parent::beforeFilter();
}
Just remember to remove this code, when you are done developing on that controller. It obviously adds weight... but for convenience, it's great.
-- Our newest site for the community: CakePHP Video Tutorials http://tv.cakephp.org
Check out the new CakePHP Questions site http://ask.cakephp.org and help others with their CakePHP related questions.
To unsubscribe from this group, send email to
cake-php+unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php
No comments:
Post a Comment