[1546] Не срабатывает disableBehaviors

Уже исправленные репорты или принятые предложения
Закрыто
Аватара пользователя
artist
Сообщения: 7
Зарегистрирован: 2010.08.22, 10:46
Откуда: Новосибирск
Контактная информация:

[1546] Не срабатывает disableBehaviors

Сообщение artist »

Здравствуйте!
Столкнулся с такой проблемой

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

 
$node->disableBehaviors();
$node->save();
$node->enableBehaviors();
 
Не отключаются поведения.
В одном из поведений есть метод beforeValidate и он не дает сохранится модели, но на данный момент это поведение не нужно, поэтому пытаюсь отключить, но поведение все равно отрабатывает.
В чем может быть проблема?
Yii 1.1.4 версия
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Не срабатывает disableBehaviors

Сообщение samdark »

Тестовый наборчик сочинить сможете? Одна модель, одно поведение с die("hello, I'm behavior!") в beforeValidate.
Аватара пользователя
artist
Сообщения: 7
Зарегистрирован: 2010.08.22, 10:46
Откуда: Новосибирск
Контактная информация:

Re: Не срабатывает disableBehaviors

Сообщение 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));
    } 
Вложения
protected.zip
на всякий случай полное приложение каталог protected
(16.13 КБ) 177 скачиваний
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Не срабатывает disableBehaviors

Сообщение samdark »

Хороший тест. Воспроизвёл, урезал до 4-х файлов. Не прошло. Похоже баг.
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: [1546] Не срабатывает disableBehaviors

Сообщение samdark »

Написал юнит-тест, зарепортил: http://code.google.com/p/yii/issues/detail?id=1546
Аватара пользователя
artist
Сообщения: 7
Зарегистрирован: 2010.08.22, 10:46
Откуда: Новосибирск
Контактная информация:

Re: [1546] Не срабатывает disableBehaviors

Сообщение artist »

:-)))
ага, не сразу допер про юнит тест. стыдно
Закрыто