readonly textfield使用场景yii

时间:2013-09-20 06:03:01

标签: yii scenarios

如何在yii中使用方案禁用文本字段?我有3类帐户superadmin,admin和普通用户。所有3类用户都可以访问有关它们的更新信息,但是其中一个字段accountId只能由superadmin和admin更新,但该字段也应该显示给用户。目前我正在以下列方式进行。

<div class="row">
    <?php echo $form->labelEx($user,'accountID'); ?>
    <?php
    if(Yii::app()->user->checkAccess('admin'))
        echo $form->textField($user,'accountID',array('size'=>32,'maxlength'=>32)); 
    else
        echo $form->textField($user,'accountID',array('size'=>32,'maxlength'=>32, 'disabled'=>'true'));?>
    <?php echo $form->error($user,'accountID'); ?>
</div>

这个方法解决了我的问题,但它不是一个好方法,更好的方法是使用场景。如何使用场景实现相同的效果?

2 个答案:

答案 0 :(得分:3)

我所做的是创建一个检查用户是否具有访问权限的函数。这将减少我的代码,使其更容易维护。

echo $form->textField($user,'accountID',array('size'=>32,'maxlength'=>32,checkAccess($userId)));?>

// my function 
function checkHTMLUserAccess($userId){
    // Some codes
    if ($hasAccess) return array('disabled'=>true);
    else return array();
}

类似的东西:)

答案 1 :(得分:0)

        <div class="row">
            <?php echo $form->labelEx($user,'accountID'); ?>
            <?php echo $form->textField($user,'accountID',array('size'=>32,'maxlength'=>32, 'disabled'=>Yii::app()->user->checkAccess('admin'))); ?>
            <?php echo $form->error($user,'accountID'); ?>
        </div>