Текстовое поле только для чтения с использованием сценариев yii

Как я могу отключить текстовое поле, используя сценарии в YII? У меня есть 3 класса учетных записей superadmin, администратора и обычных пользователей. Все 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 ответа

Решение

Я создаю функцию, которая проверяет, есть ли у пользователя доступ. Это уменьшит мой код, чтобы упростить поддержку.

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();
}

что-то вроде того:)

        <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>
Другие вопросы по тегам