0

我正在使用 Symfony PHP。我有一个复选框,根据它是否被选中,我想在表单中显示一个组合框。如果选中复选框,我想显示包含所有选项的组合,但如果未选中,我想禁用组合,但在保存表单时,小部件必须具有默认值或硬编码值。我不知道该怎么做,因为当我将组合框设置为禁用时,表单将小部件保存为空,我无法设置预定义的值。任何人都可以帮助我吗?

4

1 回答 1

1

您可以在 bind() 方法中更改表单提交的数据。如果您想根据用户选择/提交的内容更改表单的行为,请使用此选项。

如果您想在表单数据经过验证并准备好保存到数据库后更改对象的更改方式,请查看 updateObject() 方法。

class myForm
{
    public function configure()
    {
        // configuration
    }    

    public function bind($taintedValues = array(), $taintedFiles = array())
    {
        // I can alter the behaviour of the form here, depending on the data submitted
        if (isset($taintedValues['do_not_store_my_personal_details'])) {
            // Change the value of a form field. If the form doesn't pass validation, the user will see any information entered into the phone_number fields has been deleted
            $taintedValues['phone_number'] = null;
        }

        return parent::bind($taintedValues, $taintedFiles);
    }

    public function updateObject($values = null)
    {
        if ($values === null) {
            $values = $this->getValues();
        }

        // Override the data stored with the object
        if ($values['do_not_store_my_personal_details'] == true) {
            $values['phone_number'] = null;
        }

        return parent::updateObject($values);
}
于 2013-04-27T02:31:03.523 回答