Для одного действий мне нужно преобразовать $ album_id, прежде чем сохранить его в БД в функции модели BeforeSave() я делаю:Yii проверка сценарий в BeforeSave()
// преобразовать album -> album_id
$album_id=array();
foreach($this->string2array($this->album, '\|') as $one)
$album_id[]=Album::model()->findByAttributes(array('album' => $one))->id;
$this->album_id = $this->array2string($album_id);
но для другого действия я не нуждаюсь в этом transform, потому что $ album_id уже находится в правильном состоянии. Поэтому я сценарий «batchcreate» в этом действии:
public function actionCreate()
{
Yii::import('ext.multimodelform.MultiModelForm');
$model = new Album('create');
$song = new Song();
$song->setScenario('batchcreate');
...
}
и попытаться проверить этот сценарий в модели:
if(!($this->scenario === 'batchcreate')) {
// преобразовать album -> album_id
$album_id=array();
foreach($this->string2array($this->album, '\|') as $one)
$album_id[]=Album::model()->findByAttributes(array('album' => $one))->id;
$this->album_id = $this->array2string($album_id);
}
но условие всегда истинно. Почему мой сценарий не установлен или не регистрируется в инструкции if? Или, может быть, лучше проверить не сценарий, а сделать другую переменную, так как установить ее значение для двух разных случаев?
вся моя BeforeSave():
protected function beforeSave()
{
if(parent::beforeSave())
{
// преобразовать whoes -> who
$who=array();
foreach($this->string2array($this->whoes) as $one) {
$userrow = User::model()->findByAttributes(array('username' => $one));
if($userrow) $who[]=CHtml::encode($userrow->id);
else $who[]=$one;
}
$this->who = $this->array2string($who);
//var_dump($this->scenario);
if(!($this->scenario == 'batchcreate')) {
//if($this->notbatchcreate == 'yes') {
// преобразовать album -> album_id
$album_id=array();
foreach($this->string2array($this->album, '\|') as $one)
$album_id[]=Album::model()->findByAttributes(array('album' => $one))->id;
$this->album_id = $this->array2string($album_id);
}
return true;
}
else
return false;
}
Что такое базовый класс альбома и песни? –
класс Song extends ActiveRecord; класс Album extends ActiveRecord – almix
Вы пытались выполнить var_dump ($ this->)? Где вы выполняете эту проверку? Какой метод вашей модели? –