Yii Framework Forum: Обработка Свойств Модели В Самой Модели При Их Вызове - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Обработка Свойств Модели В Самой Модели При Их Вызове Rate Topic: -----

#1 User is offline   Termit132 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 14
  • Joined: 14-September 12

Posted 24 January 2013 - 12:40 PM

Привет Всем !
Мне необходимо встроить функцию транслита в модель (CActiveRecord) которая будет изменять значение свойства модели, или другим словом - переопределять
Код должен выглядеть приблизительно так:
//model
...
public $name;
...
getName()
{
  return HelpClass::translit($this->name);
}


Но такой вариант не работает.
Спасибо за помощь !
0

#2 User is offline   tuschkan 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 122
  • Joined: 20-April 11
  • Location:Kiev, Ukraine

Posted 24 January 2013 - 01:12 PM

а что не работает?
0

#3 User is offline   Termit132 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 14
  • Joined: 14-September 12

Posted 24 January 2013 - 01:33 PM

не работает тот код что я написал, только свойство описано не внутри класса, а через PHPDOC т.е. @param name что-то в этом духе - я генерировал модели через Gii.
0

#4 User is offline   tuschkan 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 122
  • Joined: 20-April 11
  • Location:Kiev, Ukraine

Posted 24 January 2013 - 01:47 PM

Вам нужно сделать транслит после того, как записи будут найдены?

В components создайте свой helper на подобии

  class Helper 
  {
  
    public static function funcName()
    {
       return ...
    }


В модели используйте метод afterFind.

protected function afterFind()
{
    $this->name = Helper::funcName($this->name);
    return parent::afterFind();
}

1

#5 User is offline   Termit132 

  • Newbie
  • Yii
  • Group: Members
  • Posts: 14
  • Joined: 14-September 12

Posted 25 January 2013 - 02:56 PM

View Posttuschkan, on 24 January 2013 - 01:47 PM, said:

Вам нужно сделать транслит после того, как записи будут найдены?

В components создайте свой helper на подобии

  class Helper 
  {
  
    public static function funcName()
    {
       return ...
    }


В модели используйте метод afterFind.

protected function afterFind()
{
    $this->name = Helper::funcName($this->name);
    return parent::afterFind();
}



Спасибо ! Это сработало, я раньше писал этот вариант но неправильный образец использовал т.к. parent раньше вызывался.
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users