Изменение значений в хуках 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;