У меня есть контроллер расписания с четырьмя действиями:
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: пользователи и администраторы. Я хочу настроить его так, чтобы пользователи могли получить доступ к «индексу» и «представлению», а администраторам - ко всему. Итак, я начал с этого:
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'));
пользователи блокируются надлежащим образом, но ссылка исчезает из объекта навигации. Кто-нибудь знает, что я делаю не так? Спасибо.