Текстовое поле только для чтения с использованием сценариев 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>