3

yiiのシナリオを使用してテキストフィールドを無効にするにはどうすればよいですか? スーパー管理者、管理者、および通常のユーザーの 3 つのクラスのアカウントがあります。3 つのクラスのユーザーはすべて、自分に関する情報を更新するためのアクセス権を持っていますが、フィールド accountId の 1 つはスーパー管理者と管理者のみが更新できますが、そのフィールドはユーザーにも表示する必要があります。現在、私は次の方法でそれをやっています。

<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>

この方法で問題は解決しましたが、良い方法ではなく、より良い方法はシナリオを使用することです。シナリオを使用して同じものを実装するにはどうすればよいですか?

4

2 に答える 2

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

そんな感じ :)

于 2013-09-20T06:52:08.950 に答える
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>
于 2013-09-20T06:55:01.690 に答える