parent::beforeSave() зачем?

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
Seph
Сообщения: 57
Зарегистрирован: 2014.03.20, 07:04

parent::beforeSave() зачем?

Сообщение Seph »

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

protected function beforeSave(){
        if(!parent::beforeSave())
            return false;
        if(($this->scenario=='insert' || $this->scenario=='update') &&
            ($document=CUploadedFile::getInstance($this,'document'))){
            $this->deleteDocument(); // старый документ удалим, потому что загружаем новый
 
            $this->document=$document;
            $this->document->saveAs(
                Yii::getPathOfAlias('webroot.media').DIRECTORY_SEPARATOR.$this->document);
        }
        return true;
    } 
зачем это условие?

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

 if(!parent::beforeSave())
            return false; 
Евгений Владимирович
Сообщения: 64
Зарегистрирован: 2012.11.19, 08:42

Re: parent::beforeSave() зачем?

Сообщение Евгений Владимирович »

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

if(!parent::beforeSave())
   return false;
 
Пытается вызвать parent::beforeSave() от базового класса и выполнить его, если beforeSave вернет flase значит что то не так с save, как то так
Seph
Сообщения: 57
Зарегистрирован: 2014.03.20, 07:04

Re: parent::beforeSave() зачем?

Сообщение Seph »

нужен ответ поточнее..
Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

Re: parent::beforeSave() зачем?

Сообщение anton44eg »

а куда уже точнее? посмотрите исходники
Seph
Сообщения: 57
Зарегистрирован: 2014.03.20, 07:04

Re: parent::beforeSave() зачем?

Сообщение Seph »

может не правильно поняли меня, зачем нужны эти 2 строчки? зачем проверять? что это дает? почему нельзя обойтись без них?
Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

Re: parent::beforeSave() зачем?

Сообщение anton44eg »

Евгений Владимирович писал(а):

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

if(!parent::beforeSave())
   return false;
Пытается вызвать parent::beforeSave() от базового класса и выполнить его, если beforeSave вернет flase значит что то не так с save, как то так
Seph
Сообщения: 57
Зарегистрирован: 2014.03.20, 07:04

Re: parent::beforeSave() зачем?

Сообщение Seph »

я понимаю что они делают, но зачем они это делают?
Аватара пользователя
anton44eg
Сообщения: 2716
Зарегистрирован: 2012.01.25, 13:37
Откуда: Киев

Re: parent::beforeSave() зачем?

Сообщение anton44eg »

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

Re: parent::beforeSave() зачем?

Сообщение slavcodev »

Seph писал(а):я понимаю что они делают, но зачем они это делают?
Ну как же? В родительском классе в этом методе может быть много чего важного, как же его не выполнить?
Естественно есть случаи когда в дочернем классе нужно перекрыть родительский, но чаще всего он дополняет родительский, поэтому родительский тоже нужно выполнить.
Жду Yii 3!
Seph
Сообщения: 57
Зарегистрирован: 2014.03.20, 07:04

Re: parent::beforeSave() зачем?

Сообщение Seph »

во! спасибо за ответ. Теперь все ясно)
Seph
Сообщения: 57
Зарегистрирован: 2014.03.20, 07:04

Re: parent::beforeSave() зачем?

Сообщение Seph »

и еще, где этот метод вызывается? в контроллерах не намека, автоматически?
Евгений Владимирович
Сообщения: 64
Зарегистрирован: 2012.11.19, 08:42

Re: parent::beforeSave() зачем?

Сообщение Евгений Владимирович »

Seph писал(а):и еще, где этот метод вызывается? в контроллерах не намека, автоматически?
http://www.yiiframework.com/doc/api/1.1/CActiveRecord
Seph
Сообщения: 57
Зарегистрирован: 2014.03.20, 07:04

Re: parent::beforeSave() зачем?

Сообщение Seph »

спасибо большое)
Ответить