Проблема с Image Column для CGridView

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
TBIKC
Сообщения: 133
Зарегистрирован: 2011.07.23, 16:30

Проблема с Image Column для CGridView

Сообщение TBIKC »

Установил http://yiiext.github.com/extensions/zii ... me.ru.html
Возникли проблемы с отображением картинки
Изображение
В виджете написал:

Код: Выделить всё

        array(
            'class' => 'EImageColumn',
            'imagePathExpression' => "Yii::app()->urlManager->baseUrl . '/../images/assortiment/3_assortiment.jpg'",
            'emptyText' => '—',
            'imageOptions' => array(
                'width' => 100,
            ),
        ),
Как сделать чтобы отображалась картинка с соответствующим id ?
В CDetailView так вывожу

Код: Выделить всё

        array(
            'label' => 'Изображение',
            'type' => 'raw',
            'value' => $this->assortiment_img($model->id, $model->name),
        ),
Есть метод:

Код: Выделить всё

    public function assortiment_img($id, $name, $width = '80', $class = 'assortiment_img')
    {
        if (file_exists(Yii::app()->basePath . '/../images/assortiment/' . $id . '_assortiment.jpg'))
            return CHtml::image(Yii::app()->urlManager->baseUrl . '/../images/assortiment/' . $id . '_assortiment.jpg', $name,
                array('width' => $width, 'class' => $class));
        else
            return CHtml::image(Yii::app()->urlManager->baseUrl . '/../images/assortiment/no_photo.jpg', 'No photo',
                array('width' => $width, 'class' => $class));
    } 
Последний раз редактировалось TBIKC 2012.05.15, 14:45, всего редактировалось 2 раза.
Аватара пользователя
Koduc
Сообщения: 140
Зарегистрирован: 2011.02.15, 18:56

Re: Проблема с Image Column для CGridView

Сообщение Koduc »

Как я понял, ругается здесь:

Код: Выделить всё

'imagePathExpression' => "Yii::app()->urlManager->baseUrl . '/../images/assortiment/3_assortiment.jpg'", 
Попробуем заменить на:

Код: Выделить всё

'imagePathExpression' => Yii::app()->urlManager->baseUrl . '/../images/assortiment/3_assortiment.jpg', 
Разработка на Yii: monoray.ru
Открытое бесплатное решение для создания сайтов по аренде/продаже недвижимости: Open Real Estate
Аватара пользователя
TBIKC
Сообщения: 133
Зарегистрирован: 2011.07.23, 16:30

Re: Проблема с Image Column для CGridView

Сообщение TBIKC »

Забыл обновить
Изображение

Показывает, но только статическую картинку, мне надо чтобы для каждого id была своя картинка
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Проблема с Image Column для CGridView

Сообщение slavcodev »

Код: Выделить всё

'imagePathExpression' => "Yii::app()->urlManager->baseUrl . '/../images/assortiment/'.$data->id.'_assortiment.jpg'", 
$data - это модель в конкретной строчке
если стоит >php5.3 переходи на анонимные функции, намного удобнее

Код: Выделить всё

/**
 * @param CModel $data Модель соответствующая текущей строчке
 * @param int $row порядковые номер строки, начиная с 0
 */
'imagePathExpression' => function($data,$row){
  return Yii::app()->urlManager->baseUrl . '/../images/assortiment/' . $data->id . '_assortiment.jpg';
}, 
Жду Yii 3!
Аватара пользователя
TBIKC
Сообщения: 133
Зарегистрирован: 2011.07.23, 16:30

Re: Проблема с Image Column для CGridView

Сообщение TBIKC »

Если использовать анонимную функцию, то выводит: Trying to get property of non-object

А если первым способом, то выводит: Undefined variable: data
Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

Re: Проблема с Image Column для CGridView

Сообщение anton44eg »

Код: Выделить всё

'value' => $this->assortiment_img($model->id, $model->name),
замени на

Код: Выделить всё

'value' => $this->assortiment_img($data->id, $data->name),
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Проблема с Image Column для CGridView

Сообщение slavcodev »

TBIKC писал(а):Если использовать анонимную функцию, то выводит: Trying to get property of non-object
да там кажется в коде ошибка, нужно поменять параметры функции местами function($row,$data){}
TBIKC писал(а):А если первым способом, то выводит: Undefined variable: data
а так

Код: Выделить всё

'imagePathExpression' => 'Yii::app()->urlManager->baseUrl . "/../images/assortiment/".$data->id."_assortiment.jpg"',  
Жду Yii 3!
Аватара пользователя
TBIKC
Сообщения: 133
Зарегистрирован: 2011.07.23, 16:30

Re: Проблема с Image Column для CGridView

Сообщение TBIKC »

Спасибо огромнейшей просто! eval - это просто тихий ужас ! Самый последний вариант заработал
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Проблема с Image Column для CGridView

Сообщение slavcodev »

В посл. варианте не eval виноват :) там незнание основ php ;)
Предпоследний вариант с анонимной функций тоже должен работать 100%, работает в куче проектах.
Жду Yii 3!
Ответить