0

アクションを見てみましょう(フォームはモデルに基づいています)

$this->form->bind ($request->getParameter('task'));
if ($this->form->isValid())
{
    // cakk
}

これはすべてうまく機能しますが、実際には有効でない場合は有効ではありません。

しかし、いくつかのフィールドを編集したいです。たとえば、日付は常に現在に設定する必要があります。または、パスワードをエンコードする必要があります。これどうやってするの?

4

1 に答える 1

1

doSave()次のような形式でメソッドをオーバーライドできます。

public function doSave($con = null)
{
   $this->values['form field'] = 'newvalue';
   parent::doSave($con);
}

$this->valuesフォーム上の値を含む配列です。

アップデート

ポストバリデーターを使用できます..このように(フォームクラスで):

$this->validatorSchema->setPostValidator(
     new sfValidatorCallback(array('callback' => array($this, 'methodName')))
);

public function methodName($validator, $values)
{
    // check / change what you need to
    $values['fieldname'] = 'new value';
    // return values
    return $values;
}
于 2013-01-04T18:33:27.603 に答える