我正在使用Kohana 3.3开发一个网站,我希望根据用户的角色有选择地显示HTML UI元素。 e: - 如果用户是管理员,则显示“编辑”超链接,当管理员点击编辑按钮时,将文本框从“只读”更改为“正常”。
如果用户是注册的普通用户,则启用按钮“提问”。
如果用户是访客,则他没有特权。
现在我正在使用单个视图文件并在检查php变量的状态后更改可见性。不知何故,我觉得我没有正确地做,处理这种情况的建议方法是什么(任何插件?)?
答案 0 :(得分:1)
好的,所以你想区分三种不同的情况
处理这个的地方,是你的控制者。在此,您可以访问Auth::instance()->get_user()
。
$user = Auth::instance()->get_user();
if ($user === null) {
//visitor
} else {
if ($user->has('roles', ORM::factory('Role', array('name' => 'admin')))) {
//admin
} else {
//user
}
}
既然您知道如何处理案件,那么您需要告诉您的观点。为此,您可以创建一个新变量,在该变量中加载三个视图中的一个 - 每种情况一个。
$specificViewName = "";
$user = Auth::instance()->get_user();
if ($user === null) {
$specificViewName = "visitor";
} else {
if ($user->has('roles', ORM::factory('Role', array('name' => 'admin')))) {
$specificViewName = "admin";
} else {
$specificViewName = "user";
}
}
$specificView = View::factory("index/".$specificViewName);
如果您在Controller_Template
,现在可以使用$this->template->set("specificView", $specificView);
。
在这种情况下,您将拥有像这样的索引模板
<html><!--etc.-->
<h1>Welcome to my website</h1>
<!--stuff all sites share like navigation-->
<?php print $specificView; ?>
<!--more-->
</html>
index / visitor
<span class="sadtext">Nothing special for you here</span>
索引/用户
<form>
<button>ask a question!
</form>
索引/管理
<a href="edit">hyperlink</a>