Страница 1 из 1
[1546] Не срабатывает disableBehaviors
Добавлено: 2010.09.07, 14:05
artist
Здравствуйте!
Столкнулся с такой проблемой
Код: Выделить всё
$node->disableBehaviors();
$node->save();
$node->enableBehaviors();
Не отключаются поведения.
В одном из поведений есть метод beforeValidate и он не дает сохранится модели, но на данный момент это поведение не нужно, поэтому пытаюсь отключить, но поведение все равно отрабатывает.
В чем может быть проблема?
Yii 1.1.4 версия
Re: Не срабатывает disableBehaviors
Добавлено: 2010.09.07, 20:12
samdark
Тестовый наборчик сочинить сможете? Одна модель, одно поведение с die("hello, I'm behavior!") в beforeValidate.
Re: Не срабатывает disableBehaviors
Добавлено: 2010.09.08, 06:56
artist
Поведение
Код: Выделить всё
class MyBehavior extends CModelBehavior{
public function beforeValidate($event) {
die('hi, i`m behavior');
return parent::beforeValidate($event);
}
}
Модель
Код: Выделить всё
class ContactForm extends CFormModel
{
public $name;
public $email;
public $subject;
public $body;
public $verifyCode;
public function behaviors() {
return array(
'mybehavior' => array(
'class' => 'MyBehavior',
),
);
}
public function rules()
{
return array(
// name, email, subject and body are required
array('name, email, subject, body', 'required'),
// email has to be a valid email address
array('email', 'email'),
// verifyCode needs to be entered correctly
array('verifyCode', 'captcha', 'allowEmpty'=>!extension_loaded('gd')),
);
}
public function attributeLabels()
{
return array(
'verifyCode'=>'Verification Code',
);
}
}
Деуствие в контроллере SiteController
Код: Выделить всё
public function actionContact()
{
$model=new ContactForm;
if(isset($_POST['ContactForm']))
{
$model->attributes=$_POST['ContactForm'];
//$model->disableBehavior('mybehavior'); //also does not work
$model->disableBehaviors(); //not working
if($model->validate())
{
$headers="From: {$model->email}\r\nReply-To: {$model->email}";
mail(Yii::app()->params['adminEmail'],$model->subject,$model->body,$headers);
Yii::app()->user->setFlash('contact','Thank you for contacting us. We will respond to you as soon as possible.');
$this->refresh();
}
}
$this->render('contact',array('model'=>$model));
}
Re: Не срабатывает disableBehaviors
Добавлено: 2010.09.08, 14:32
samdark
Хороший тест. Воспроизвёл, урезал до 4-х файлов. Не прошло. Похоже баг.
Re: [1546] Не срабатывает disableBehaviors
Добавлено: 2010.09.08, 14:56
samdark
Re: [1546] Не срабатывает disableBehaviors
Добавлено: 2010.09.08, 16:22
artist
))
ага, не сразу допер про юнит тест. стыдно