Измените imageUrl с полем user_status в пользовательской таблице

Мне нужно смоделировать: User, UserFlag В User/index добавлен столбец в CGridView:

array(
    'class' => 'CButtonColumn',
    'htmlOptions' => array("style" => 'width: 45px;'),
    'template' => '{enable}',
    'header' => 'management',
    'buttons' => array(
            'enable' => array(
                'name' => 'enable',
                'imageUrl' => Yii::app()->baseUrl."/images/ico/group.png",
                'url' => '"#".$data->username',
                'click' => 'js:function() {
                    if(confirm("Are you sure?")){
                                    changeUserStatus($(this).attr("href").replace("#", ""));
                                }
                            }',
                ),
    ),

Я буду читать статус пользователя из модели UserFlag, и если статус активен, я показываю 1.png, а если статус неактивен, я показываю 2.png.


person Chalist    schedule 15.01.2013    source источник
comment
Этот ответ может вам помочь: Использование $data var в CButtonColumn imageUrl параметр   -  person Stu    schedule 15.01.2013


Ответы (1)


Да, к сожалению, переменная $data недоступна из imageUrl. Я бы порекомендовал расширить CButtonColumn, как предложила ссылка Стью.

Если вы не хотите этого делать, вы можете создать два столбца кнопок и отображать их в зависимости от статуса. Это будет примерно так, но вам может потребоваться настроить его, если ваше активное значение user_status не равно 1 или вы хотите, чтобы изображения были перевернуты:

'enable' => array(
                'name' => 'enable',
                'visible'=>'$data->user_status == 1'
                'imageUrl' => Yii::app()->baseUrl."/images/ico/1.png",
                'url' => '"#".$data->username',
                'click' => 'js:function() {
                    if(confirm("Are you sure?")){
                                    changeUserStatus($(this).attr("href").replace("#", ""));
                                }
                            }',
                ),

'disable' => array(
                'name' => 'disable',
                'visible'=>'$data->user_status == 0'
                'imageUrl' => Yii::app()->baseUrl."/images/ico/0.png",
                'url' => '"#".$data->username',
                'click' => 'js:function() {
                    if(confirm("Are you sure?")){
                                    changeUserStatus($(this).attr("href").replace("#", ""));
                                }
                            }',
                ),

Вам также нужно будет добавить {disable} в свой шаблон CButtonColumn.

Это не идеально, поскольку вы повторяете код, но, по крайней мере, вы можете сделать это без необходимости расширения каких-либо классов.

person frostyterrier    schedule 15.01.2013