Kohana 3.3 - 动态菜单创建与权限管理可能吗?

时间:2013-12-18 16:38:04

标签: php kohana kohana-3 kohana-3.3

我想用Kohana 3.3替代我自己编写的“框架”,我目前正用于我的webapp。您能否告诉我是否有可能满足以下要求以及如何实现这一目标?

  1. 我的应用程序包含多个控制器,我想通过菜单访问它们。应该动态创建此菜单,以便立即显示新创建的控制器。此外,菜单应排除当前登录用户无法访问的控制器。

  2. 每个控制器必须能够在执行操作之前检查用户的角色(例如,全局管理员,特定于控制器的管理员,常规用户)。根据此角色,每个控制器必须能够允许或禁止访问。 (考虑基于团体会员的方法)。

  3. 我想为菜单和每个控制器输出使用一个单独的模板(据我所知,也称为部分模板)。它们都应该与“框架”模板(带有页眉,页脚,登录信息等)合并。我看到有一个特殊的模板控制器(template_controller iirc) - 这是用作我的基本控制器的正确控制器吗?我应该创建一个管理我的“模板”的基本控制器,并以某种方式将其他控制器嵌入其中吗?!

  4. 此外,如果每个控制器都能够将当前请求识别为ajax或非ajax并相应地调整渲染(在大多数情况下,使用ajax再次“渲染”整个站点,那将是很好的)

  5. 我会感激每一个答案! 提前致谢。

1 个答案:

答案 0 :(得分:1)

  1. 是的,但您必须自己搜索AFAIK控制器文件。

  2. 是的,请参阅before()

    2.1如果你想将它保存在一个地方,你只需要写一些额外的东西来指定哪个动作需要什么特权。查看Kohana的Request课程,了解一些你可以用来做的好东西(我要说看看网址,uri和请求方法,我不会很难知道他们到底做了什么)

    2.2你也可以在每个控制器的基础上做到这一点;例如Controller_Admin可以执行以下丑陋的单行程序(请参阅下面的2.2的检查摘录)。我建议将它拆分一点,例如为您的基本控制器提供protected $_user变量,并使用before()方法填充该变量,然后使用$this->_user代替Auth内容。

  3. Controller_Template但是,你做对了;)

  4. 喜欢这个? Request::$current->is_ajax()http://kohanaframework.org/3.3/guide-api/Request#is_ajax

  5. 2.2 for Snippet:

    if ( ! Auth::instance()->get_user()->has('role', ORM::factory('Role', array('name' => 'admin')))
       throw new HTTP_Exception_403('Permission denied!');