我有一个包含四个操作的计划控制器:
class ScheduleController extends Zend_Controller_Action {
public function indexAction(){ ... }
public function viewAction(){ ... }
public function addAction(){ ... }
public function deleteAction(){ ... }
}
所以我用这样的数组设置了Zend_Navigation:
array(
...other links here...
array(
'controller'=> 'schedule',
'action' => 'index',
'label' => 'Schedule',
'resource' => 'schedule',
'privilege' => 'index',
'privilege' => 'view',
'privilege' => 'add',
'privilege' => 'edit',
)
);
我还在ACL中创建了两个组:users&管理员。我想设置它以便用户可以访问“索引”和“查看”,而管理员可以访问所有内容。所以我从这开始:
class My_AccessControlList extends Zend_Acl {
$this->addRole(new Zend_Acl_Role('user'));
$this->addRole(new Zend_Acl_Role('admin'), 'user');
...
$this->addResource(new Zend_Acl_Resource('schedule'));
$this->deny();
...
现在,似乎除非我添加这一行:
$this->allow('user', 'schedule');
链接不会显示在导航中。然后,如果我添加这个:
$this->deny('user', 'schedule', 'add');
用户被阻止了“添加”操作,到目前为止一切都很好。但如果我再添加:
$this->deny('user', 'schedule', 'edit');
--or change it to this--
$this->deny('user', 'schedule', array('add', 'edit'));
用户被正确阻止,但链接从Navigation对象中消失。有谁知道我做错了什么?感谢。
答案 0 :(得分:1)
array(
'controller'=> 'schedule',
'action' => 'index',
'label' => 'Schedule',
'resource' => 'schedule',
'privilege' => 'index',
'privilege' => 'view',
'privilege' => 'add',
'privilege' => 'edit',
)
...您正在三次覆盖'privilege'键,这会产生一个包含最后一个值'edit'的键'特权'的数组。 'privilege'键应包含四个值的数组