Yii2 - 在main.php文件中验证模型中的字段

时间:2016-04-17 11:39:38

标签: php layout yii2

我有一个名为user的表,里面有一个名为estatuto的字段。

只有拥有estatuto == admin的用户才能在main.php文件中的NavBar小部件中看到Admin超链接。

我的问题是办理登机手续:

Error inflating class com.vj.myapp.CustomView

如果用户使用estatuto == admin登录,并且仅在该条件下显示管理超链接。

我只能检查用户是否是访客。

我需要类似的东西:

'label' => 'Admin', 'visible' => !Yii::$app->user->isGuest,

我搜索了很多,我唯一看到和无法理解的是:

'label' => 'Admin', 'visible' => !Yii::$app->user->isGuest && User::estatuto = 'admin',

但也许还有另一种方法。

任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:1)

您的任务不是验证模型字段,而是经典的权限管理任务。因此,您应该使用Yii2 RBAC功能。在这种情况下,您可以检查这样的权限:

\Yii::$app->user->can('viewAdminMenu')

答案 1 :(得分:0)

当用户登录时,将estatuto的值存储在会话中。

然后在任何时候只需从会话中调用该值。

也不要设置可见标记以进行访问。如果不是管理员,您不需要显示整个链接。 另外只隐藏链接是不够的,你还需要检查控制器内的访问权限。

更好的方法是使用基于角色的访问控制或RBAC。