如何显示包含旧值的表单以便您可以编辑?

时间:2012-04-21 16:42:33

标签: forms symfony

在控制器中我找到了id

 $oggetto = $this->getDoctrine()
        ->getRepository('AcmeTryBundle:Try')
        ->find($id);

我把这个$值传递给表格后(只是?)

$form = $this->createForm(new TryType(), $oggetto);

并在FormType中?我放的是什么?

public function buildForm(FormBuilder $builder, array $options)
    {
        $builder->add('name','text')  ? 

3 个答案:

答案 0 :(得分:0)

你的方法很好。

1)在DB中获取$oggetto对象

2)将其传递给您的FormType $form = $this->createForm(new TryType(), $oggetto);

3)在表单类型中添加所需的字段

4)将表单发送到您的观看'form' => $form->createView()

5)在您看来,请致电您的表格

<form action="{{ path('task_new') }}" method="post" {{ form_enctype(form) }}>
    {{ form_widget(form) }}

    <input type="submit" />
</form>

您的字段(在3中定义))将由您的对象数据自动填充。然后,您可以更改它们并进行编辑。

有关详细信息,请参阅文档:http://symfony.com/doc/current/book/forms.html

答案 1 :(得分:0)

你的表格似乎很好

class TryFormType extends AbstractType {
    public function buildForm(FormBuilder $builder, array $options)
        {
            $builder->add('name','text')  ;
        }

 public function getName() {
        return 'tryform';
    }
}

函数getName为表单提供一个名称,在本例中为tryform。

在控制器中,您可以添加这样的返回语句。

return $this->render('AcmeTryBundle:Default:TryForm.html.twig', array(
                    'TryForm' => $form->createView()
                ));

在twig文件中访问如下。

{{ form_widget(TryForm.name) }}

该值将自动传递到那里。然后你可以编辑它

答案 2 :(得分:0)

例如,在 Symfony 4.2.3 中,您填写并提交了表单,并且某些表单值无效。

<input type="text" name="name" value="{{ form.vars.value.name }}">

通过这种方式,如果值有效,则将旧表单输入设置为默认值。