Yii. Расширение image-column 05.06.2011
Исходник расширения image-column можно скачать по адресу:
http://www.yiiframework.com/extension/image-column/
Столкнулся с тем что данное расширение может работать только с полями из текущей таблицы.
Пример:
У меня есть таблица новостей (news) эту новость добавил какой-то автор (author) у этого автора есть аватарка (avatar).
Мне нужно вывести аватару автора в поле таблица zii.widgets.grid.CGridView, из примера на официальной странице видно, что нужно указать в свойстве name поле из которого будет взято имя файла аватары, но когда я пытаюсь указать news.author.avatar мне вываливается сообщение «Не определено свойство».
Решение:
Открываем файл EImageColumn.php и смотрим метод renderDataCellContent и там написано $data->{$this->name} т.е. получается что данные берутся не учитывая ralations а из поля запроса.
Затем открываем, например, файл CCheckBoxColumn.php и в том же методе нужный нам код
а именно:
if($this->value!==null)
$value=$this->evaluateExpression($this->value,array('data'=>$data,'row'=>$row));
else if($this->name!==null)
$value=CHtml::value($data,$this->name);
else
$value=$this->grid->dataProvider->keys[$row];
Вставляем в начало метода renderDataCellContent этот код и вместо $data->{$this->name} указываем $value
. Теперь это расширение может учитывать relations-ы и можно написать news.author.avatar и оно возьмёт имя файла из поля avatar из связи author.
Да и чуть не забыл, необходимо в описании класс EImageColumn добавить:
public $value;
Скачать доработанное мною расширение можно по адресу: EImageColumn
P/S:
Пишу пост так как не смог отписаться на официальном сайте.
Это была моя первая доработка расширений Yii, я думаю можно больше узнать если хотя бы разобраться в тех исходниках которые идут с Yii, и ещё доработать это расширение.