Манипуляция данных до их вывода

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

Манипуляция данных до их вывода

Сообщение andry »

интересует такой вопрос, есть ли некая функция которая подобная к примеру beforeSave() при сохранении записей в нутри этой функции можно делать какие то манипуляции с данными, вот только не при сохранении а при выводе записей, есть что нибудь?

т.к. у меня много контроллеров выводящие одно и тоже только по разным критериям к примеру по: "алфавиту", "поиск", новые "записи", и т.п. и если допустим нужно поле текст очистить от всех тегов то не пришлось делать во всех этих контролеров вставлять $model->content = srtip_tags($model->content); а прописать в одном методе модели как при beforeSave()
andry
Сообщения: 224
Зарегистрирован: 2009.11.08, 16:52

Re: Манипуляция данных до их вывода

Сообщение andry »

великолепно, всё чётко:)
pirrat
Сообщения: 193
Зарегистрирован: 2009.04.03, 09:41

Re: Манипуляция данных до их вывода

Сообщение pirrat »

мне кажется лучшей практикой в вашем случае сделать геттеры на поля, и в них проводить манипуляции над нужными полями.

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

public function getContent()
{
return srtip_tags($this->content);
}
 
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Манипуляция данных до их вывода

Сообщение slavcodev »

pirrat писал(а):мне кажется лучшей практикой в вашем случае сделать геттеры на поля, и в них проводить манипуляции над нужными полями.

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

public function getContent()
{
return srtip_tags($this->content);
}
 
Стоить помнить $model->attr выдаст именно значение атрибута, а не выполнит геттер (getAttr()) как в случае с компонентами.
Это кстати мне кажется большой минус. Геттер был бы лучше, но пока работает так :(
Жду Yii 3!
pirrat
Сообщения: 193
Зарегистрирован: 2009.04.03, 09:41

Re: Манипуляция данных до их вывода

Сообщение pirrat »

а кто мешает вызывать геттер на прямую (ну не считая компонентов yii, которые работают напрямую с свойствами)?!
тем более в большинство стандартов рекомендуется использовать методы вместо прямого обращения к свойствам.
во вторых таким образом мы частично избавляемся от "магии"
да и манипуляция со свойствами в обработчике события при выборке, как то "костыльно" выглядит чтоли...
в любом случае выбор за вами.
andry
Сообщения: 224
Зарегистрирован: 2009.11.08, 16:52

Re: Манипуляция данных до их вывода

Сообщение andry »

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

Re: Манипуляция данных до их вывода

Сообщение slavcodev »

andry, иногда нужен доступ к оригинальным данным.
Жду Yii 3!
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: Манипуляция данных до их вывода

Сообщение Ekstazi »

Где-то я видел onBeforeRender и onAfterRender )
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Манипуляция данных до их вывода

Сообщение samdark »

Вот тут кое-что есть на эту тему: http://yiiframework.ru/doc/cookbook/ru/core.events
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Манипуляция данных до их вывода

Сообщение slavcodev »

Ekstazi писал(а):Где-то я видел onBeforeRender и onAfterRender )
это события CController начиная с версии 1.1.5
но эти события кажется тут не подойдут
Жду Yii 3!
Ответить