Задать вопрос
@jekahm

Каким образом и где определяется свойство isNewRecord класса BaseActiveRecord в Yii2?

Доброго времени суток!
В данный момент занимаюсь изучением Yii2 и столкнулся с такой трудностью.
При генерации CRUD через Gii согласно оф. документации обнаружил в подключаемом файле представления views/country/_form.php, что состояние кнопки Create/Update меняется, исходя из значения свойства isNewRecord класса BaseActiveRecord.
Html::submitButton($model->isNewRecord ? 'Create' : 'Update', ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary'])

Как я понимаю, при этом происходит вызов соответсвующего геттера getIsNewRecord(),
public function getIsNewRecord()
    {
        return $this->_oldAttributes === null;
    }

где в свою очередь проверяется очередное свойство $_oldAttributes.
Но вот где и как устанавливается последнее свойство, я так и не сообразил.
Буду очень признателен, если кто-нибудь обьяснит, что же происходит далее в этой цепочке.
Заранее благодарен за ответ!
  • Вопрос задан
  • 4585 просмотров
Подписаться 1 Оценить Комментировать
Ответ пользователя Сергей Протько К ответам на вопрос (2)
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
это свойство по идее устанавливается сразу после загрузки данных из базы (в oldAttributes и в attributes). Так, перед сохранением мы можем проверить что мы изменили, так как изменениям будет подвержен только attributes. Ну а для новоиспеченной модели oldAttributes всегда будет пустым.
Ответ написан
Комментировать