zend_acl:动态添加额外资源并获取param predispatch

时间:2010-03-25 12:31:46

标签: zend-framework parameters bootstrapping zend-acl

首先对这个woffle感到抱歉,因为我不确定如何最好地描述这个。基本上我不确定在加载控制器之前如何在引导程序中获取参数,但这里是冗长的版本......

我有一个存储我所有默认资源的acl类。我的所有页面/帖子内容都是一个数据库,我希望管理员能够选择该页面可用的角色。

我知道可以循环访问数据库表并立即将它们全部添加,但我担心这会耗尽资源。我有它的工作,我的访问检查插件可以调用动态权限函数,但我需要获取当前页面ID的参数,并且它的权限是在加载控制器之前设置它。

这是否有意义或者我什么都不担心,我应该立即获得所有页面的资源?

提前感谢阅读我的傻瓜!!

1 个答案:

答案 0 :(得分:1)

我实际上通过阅读zend手册找到了我需要的东西! DOH!

我只需要使用$ request-> getParams(),这样我就可以从网址获取帖子ID

然后我可以使用以下方法设置权限

下面是访问检查插件

$params =  $request->getParams();    
$this->_acl->setDynamicPermissions($params['post_id']);

然后在Acl类

 public function setDynamicPermissions($id) {

    $id             = (int)$id;
    $page_id        =  "page-" . $id;

    $post           = new Model_DbTable_Post();
    $restriction    = $post->getPostRestriction($id);


    $this->add(new Zend_Acl_Resource($page_id));
    $this->allow($restriction, $page_id);

}