在 Symfony2 中渲染没有价值的表单

Render form without value in Symfony2

我正在构建一个在某些字段中具有默认值的表单:

$builder->add('field', 'text', array('data' => 'Default value');

然后在 Twig 中呈现此表单字段,如下所示:

{{ form_widget(form.field) }}

工作正常,但我不想在 HTML 中呈现的 input 标记中设置 'Default value',因为我只想设置此默认值最终用户不知道此值的内部信息。 Symfony2 中是否有任何内置方法来处理它,或者我必须编写一些自定义代码?

据我了解

尝试添加必需的 false 并在您的控制器操作中处理它。

$builder->add('field', 'text', array('required' => false));

您可以修改您的实体以执行此操作:

class MyEntity{

    const DEFAULT_FOO = "Default value";
    // ...

    private $foo;

    // ...

    public function setFoo($foo){
        if ( $foo === null ){
            $foo = self::DEFAULT_FOO;
        }

        $this->foo = $foo;
    }

    // ...
}

然后确保设置 by_reference 以确保每次调用 setter:

$builder->add('field', 'text', array(
    'by_reference' => true
));