繁体   English   中英

YII2如何根据登录用户类型处理条件?

[英]YII2 how to handle condition as per login usertype?

在此处输入图片说明 vendorinfo.php我必须根据登录用户类型隐藏并显示按钮。如果登录用户是“访问者”,则仅在任何情况下(例如,如果用户是admin或现在没有登录条件的任何用户)显示评分按钮。 如果用户类型为“ Visitor”或“ Admin”,我的代码将正常工作,但是如果没有人登录,它将失败。 其实那个时候这种情况无法得到用户的类型。为此,请帮我,我不明白如何处理这种情况。

<?php
if(!\Yii::$app->user->isGuest) {
$user = \Yii::$app->user->identity->id;
  $userType = \Yii::$app->user->identity->type;
  echo ''.$userType;
  echo '<input type="text" value='.$userType.' id="usertype"/>';
} else {
  echo '<div>Div if user is not visitor</div>';
}
?>

脚本:隐藏和显示div的脚本

<script type="text/javascript">
  $(document).ready(function(){
    var userType= document.getElementById('usertype').value;

    if(userType == 'Visitor') {  
      $('#divUserRate').show();
    } else {  
      $('#divUserRate').hide();  
    }
});

</script>

您可以从用户模型使用isGuest属性。

echo (Yii::$app->user->isGuest) ? '<div>Div if user is visitor</div>' : '<div>Div if user is not visitor</div>';

您还可以使用Rbac来管理角色和访问。

if(Yii::$app->authManager->checkAccess(Yii::$app->user->id, "editor"){
    //do something
}

对于隐藏div。我在按钮中添加了类,然后隐藏该类而不是div

<script type="text/javascript">
 $(document).ready(function(){

    $('.btnRating').hide(); 
    $('#divliveventGallery').hide();
    var userType= document.getElementById('usertype').value;
    if(userType == 'Visitor' || userType == 'FB' || userType == 'GL') {  
      $('.btnRating').show(); 
    } else if(userType == 'Vendor'){ 
      $('.btnRating').hide();  
    } else if(userType == "") {
      $('.btnRating').hide(); 
    }
});
**************Button html**************
 echo '<button type="button" id="btnRate" onClick="rateDetail('.$dp['ven_id'].','.$userId.');" class=" btnRating btn btn-default btn-block" data-toggle="modal" data-target="#rcrate">';
             echo '<strong>Rate</strong>';
             echo '</button> ';

</script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM