Сценарии для findAll и их проверка onAfterFind

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Аватара пользователя
XAKEPEHOK
Сообщения: 38
Зарегистрирован: 2012.08.16, 13:11
Откуда: КМВ
Контактная информация:

Сценарии для findAll и их проверка onAfterFind

Сообщение XAKEPEHOK »

Ребят, подскажите пожалуйста, возможно ли задать сценарий для моделей, найденных через статический вызов ::model()?
Т.е. у меня есть модель, у которой на событие AfterFind висит определенное действие. Так вот, это действие мне нужно вызывать только при определенном сценарии. Как быть?

В контроллере:

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

$district = ipGeoDistrict::model()->findAll(); 
В модели:

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

protected function afterFind() {
    parent::afterFind();
    if ($this->scenario == 'short') {
      $district = mb_strtolower($this->caption);
      switch ($district) {
        case strtolower('Центральный федеральный округ'):
          $this->caption = 'ЦФО';
          break;
        case strtolower('Северо-Западный федеральный округ'):
          $this->caption = 'СЗФО';
          break;
        case strtolower('Южный федеральный округ'):
          $this->caption = 'ЮФО';
          break;
        case strtolower('Сибирский федеральный округ'):
          $this->caption = 'СФО';
          break;
        case strtolower('Приволжский федеральный округ'):
          $this->caption = 'ПФО';
          break;
        case strtolower('Дальневосточный федеральный округ'):
          $this->caption = 'ДФО';
          break;
        case strtolower('Северо-Кавказский федеральный округ'):
          $this->caption = 'СКФО';
          break;
        case strtolower('Уральский федеральный округ'):
          $this->caption = 'УФО';
          break;
      }
    }
  } 
Большинство неправильных шагов совершаются стоя на месте
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Сценарии для findAll и их проверка onAfterFind

Сообщение samdark »

Что такое «моделей, найденных через статический вызов ::model()»?

Вообще можно populateRecord перекрыть.
Аватара пользователя
XAKEPEHOK
Сообщения: 38
Зарегистрирован: 2012.08.16, 13:11
Откуда: КМВ
Контактная информация:

Re: Сценарии для findAll и их проверка onAfterFind

Сообщение XAKEPEHOK »

Я имел ввиду для методов find, findAll, findByPk, update, updateAll и прочих, которые вызываются через ::model(). И как я понял, перекрывать придется не только populateRecord, но и как минимум сам метод model(). Оно того не стоит, т.к. в моей ситуации сделать можно проще.
Но вот интересно, в Yii2 в методе ::find() можно будет задавать сценарии для всех найденных моделей, чтобы потом использовать их в afterFind?
Большинство неправильных шагов совершаются стоя на месте
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Сценарии для findAll и их проверка onAfterFind

Сообщение samdark »

Думаю, нет. Мы о такой необходимости первый раз слышим. Если это действительно нужно — закидывайте на github.
Ответить