[英]Yii2 - validate field from model in main.php file
我有一个名为user的表,并且在其中有一个名为estatuto的字段。
只有具有estatuto == admin的用户才能在main.php文件中的NavBar小部件中看到Admin超链接。
我的问题是签入:
'label' => 'Admin', 'visible' => !Yii::$app->user->isGuest,
如果用户使用estatuto == admin登录,并且仅在这种情况下显示admin超链接。
我只能检查用户是否为访客。
我需要类似的东西:
'label' => 'Admin', 'visible' => !Yii::$app->user->isGuest && User::estatuto = 'admin',
我搜索了很多东西,但唯一看不到的是通过:
$this->view->params['customParam'] = 'customValue';
但是也许还有另外一种方法。
有人可以帮助我解决这个问题吗?
您的任务不是关于验证模型字段,而是经典的权限管理任务。 因此,您应该使用Yii2 RBAC功能。 在这种情况下,您可以像这样检查权限:
\Yii::$app->user->can('viewAdminMenu')
用户登录时,将estatuto的值存储在会话中。
然后,只要在会话中调用该值即可。
也不要设置可见标签进行访问。 如果不是管理员,则无需显示整个链接。 另外,仅隐藏链接是不够的,您还需要检查控制器内的访问权限。
更好的方法是使用基于角色的访问控制或RBAC。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.