4つのアクションを持つスケジュールコントローラーがあります。
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にユーザーと管理者の2つのグループを作成しました。管理者がすべてにアクセスできる一方で、ユーザーが「インデックス」と「ビュー」にアクセスできるように設定したいと思います。だから私はこれから始めました:
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'));
ユーザーは適切にブロックされますが、リンクはナビゲーションオブジェクトから消えます。誰かが私が間違っていることを知っていますか?ありがとう。