Изменение значений в хуках BeforeInsert или BeforeSave

Я делаю это с очень простым классом, просто для обучения, но я не могу заставить его работать так, как я вижу в http://agiletoolkit.org/learn/understand/model/actions

Это определение класса:

class Model_Task extends Model_Table {
   public $table='task';
    function init(){
        parent::init();
        $this->addField('user_id')->system(true);
        $this->addField('name')->mandatory('No has indicado un nombre para la tarea');
        $this->addField('description')->dataType('text');
        $this->addField('state')->system(true);

        $this->addHook('beforeSave',function($m){
            $m->description='test'; 
                return $m;
        });
        $this->debug();
    }  
}

Я пробовал также формат страницы samble:

class Model_Task extends Model_Table {

public $table='task';
    function init(){
        parent::init();
        $this->addField('user_id')->system(true);
        $this->addField('name')->mandatory('No has indicado un nombre para la tarea');
        $this->addField('description')->dataType('text');
        $this->addField('state')->system(true);

        $this->addHook('beforeSave',$this);
        $this->debug();
    }  

    function BeforeSave(){
        $this->description='test';
        return $this;
    }
}

Страница теста задачи также проста:

class page_Task extends Page {
    function init(){
        parent::init();

    $m=$this->add('Model_Task');
    $f=$this->add('Form');
        $f->setModel($m);
        $f->addSubmit('Guardar');

    //Task submit
    $f->onSubmit(function($form){
            $form->update();
            $form->js()->univ()->redirect('index?add_ok=1')->execute();
        });  
    }
}

В обеих реализациях описание модели сохраняется со значением, вставленным в форму, а не с "Тест". Если я отображаю $this->description или $m->description внутри функции beforeTest, то до того, как я ее установлю, и после 'Test' будет пусто, но ничего не произойдет с созданным sql. Конечно, я что-то делаю, но ¿ЧТО?

Спасибо!!

1 ответ

Решение

Правильный способ изменить значение:

$this['description'] = 'test;
Другие вопросы по тегам