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

Я должен моделировать: Пользователь, UserFlag В Пользователь / индекс добавил столбец в 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.

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("#", ""));
                                }
                            }',
                ),

Вам также необходимо добавить {отключить} в шаблон CButtonColumn.

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

Другие вопросы по тегам