【问题标题】:Symfony not Render CollectionTypeSymfony 不渲染 CollectionType
【发布时间】:2018-09-14 10:07:18
【问题描述】:

我为与我的控制器分离的数据集合类型创建了一个表单

它是我的控制器

/**
 * @Security("has_role('ROLE_USER')")
 * @Route("/phonebook/add", name="add")
 */
public function addPerson()
{
$person = new PhoneBookP();
$form = $this->createForm(PersoanlBookType::class, $person);

return $this->render(
    'default/add.html.twig',
    array('form' => $form->createView())
);
}

它是我的形式

->add('emails', CollectionType::class, array(
                'entry_type' => EmailType::class,
                'allow_add' => true,
                'prototype' => true,
                'allow_delete' => true,
                'attr'         => [
                    'class' => "emails-collection",
                ],
            ))

我的树枝是

{% block body %}
{{ form(form) }}
{% endblock %}

它没有错误并且可以在任何常见字段(如 NumberType,..)中工作,但不会在我的输出中呈现 CollectionType。我使用 Symfony 4。我怎么了?

【问题讨论】:

  • 你能出示你的controller吗?
  • 是的,我编辑问题
  • 可能是PersoanlBookTypePersonalBookType
  • 你可以展示你的树枝default/add.html.twig吗?
  • 您的问题解决了吗?

标签: php forms symfony twig symfony-forms


【解决方案1】:

在您的渲染表单中,您需要这样做:

$person = new PhoneBookP();
//addEmail() is the arraycollection in your PhoneBookP Entity
//to be able to load the form, you need to add one from your arraycollection
$person->addEmail(new Email());
$form = $this->createForm(PersoanlBookType::class, $person);

【讨论】:

    【解决方案2】:

    标签form_startform_end 仅呈现<form>-标签。要渲染其余的表单元素,请调用 <form>-tags 中的 form-twig-helper:

    {{ form_start(form) }}
       {{form(form)}}
        <button type="submit">Register!</button>
    {{ form_end(form) }}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-29
      相关资源
      最近更新 更多