如何在发布时编辑窗口小部件值?

时间:2013-01-04 17:22:05

标签: php symfony-1.4

让我们看看动作(形式是基于模型)

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

这一切都很好,当它真的无效等时它无效。

但我想编辑一些字段,例如日期必须始终设置为现在。或者必须编码密码。我怎么能这样做?

1 个答案:

答案 0 :(得分: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;
}