-1

我想使用 Kohana 3.3 作为我自己编写的“框架”的替代品,我目前正在用于我的 web 应用程序。您能否告诉我是否可以满足以下要求以及如何实现?

  1. 我的应用程序包含几个控制器,我想通过菜单访问它们。这个菜单应该是动态创建的,这样一个新创建的控制器就会立即出现。此外,菜单应排除当前登录用户无法访问的控制器。

  2. 每个控制器必须能够在执行操作之前检查用户的角色(例如全局管理员、控制器特定管理员、普通用户)。根据这个角色,每个控制器必须能够允许或禁止访问。(考虑基于组成员资格的方法)。

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

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

我将不胜感激每一个答案!提前致谢。

4

1 回答 1

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

  2. 是的,看before()

    2.1 如果你想把它保存在一个地方,你只需要写一点额外的东西来指定哪个动作需要什么权限。查看 Kohana 的Request课程,了解一些可以用于此目的的好东西(我想说看看 url、uri 和 request 方法,我不知道它们到底做了什么)

    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

2.2 的片段:

if ( ! Auth::instance()->get_user()->has('role', ORM::factory('Role', array('name' => 'admin')))
   throw new HTTP_Exception_403('Permission denied!');
于 2013-12-18T16:53:42.460 回答