1

学ぶためだけに、非常に単純なクラスでこれを行っていますが、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();
    }  
}

私もサンブルページフォーマットを試してみました:

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();
        });  
    }
}

モデル記述の両方の実装で、「テスト」ではなく、フォームに挿入された値で保存されます。beforeTest関数内で$this->descriptionまたは$m->descriptionをエコーすると、設定する前は空になり、設定した後は'Test'になりますが、生成されたSQLでは何も行われません。確かに私は何かが欠けていますが、¿何ですか?

ありがとう!!

4

1 に答える 1

1

値を変更する正しい方法は次のとおりです。

$this['description'] = 'test;
于 2012-06-17T08:06:45.647 に答える