我在页面上有一个联系表单,其中包含名称字段,电子邮件字段和textarea字段。它以最简单的方式制作......
$contactEntity = new ContactEntity();
$builder-> $this->container->get('form.factory')->createBuilder('form', $kontaktEntity, array();
$builder->add() ... fields added
然后,在管理区域中,我有一个搜索表单,用于搜索带有名称和电子邮件字段的重新发送的消息。我使用不同的实体创建该表单,其中的字段name
和email
是ContactEntity中其他六个字段之一。
问题是搜索表单在树枝中呈现,好像它是kontakt形式。
为了澄清,SearchEntity
包含字段name
和email
。 ContactEntity
也有相同的字段,但添加了一些其他字段。当搜索表单以树枝形式呈现时,它会显示name
和email
字段,就好像它是ContactEntity
的一部分。
此外,树枝定制不起作用。我无法更改标签文本值,我无法删除HTML5验证,也无法做任何事情,因为没有任何作品。我尝试重命名搜索实体中的字段,但它不起作用。
Twig渲染是在diffrenet twig脚本上进行的,并且在两种形式中都是正常的和基本的。这是在搜索表单上。将标签taxt更改为Name
不起作用。另一方面,提交值已正确呈现。
{{ form_start(form, {attr: {'no-validate' : 'novalidate'}}) }}
<div class="search-rom">
{{ form_label(form.name, 'Name') }}
{{ form_errors(form.name) }}
{{ form_widget(form.name) }}
</div>
<div class="search-rom">
{{ form_label(form.email, 'Email') }}
{{ form_errors(form.email) }}
{{ form_widget(form.email) }}
</div>
{{ form_end(form) }}
总而言之,twig渲染了构建表单与之无关的实体的两个字段。
修改
我刚刚测试了在提交表单时是否填写了SearchEntity
,而且是正确的值。我真的不知道这里发生了什么。
编辑2
这是控制器中messageAction()方法的代码片段。
$searchEntity = new SearchEntity();
$builder = $this->container->get('form.factory')->createBuilder('form', $searchEntity, array());
$builder->add('name', 'text')
->add('email', 'text')
->getForm();
然后在带有$form->createView()
答案 0 :(得分:0)
也许您不需要将构建器传递给实体。在其他示例中,您可以在获取数据后创建实体。
How to render a form without a class in other service?
http://symfony.com/doc/current/book/forms.html#using-a-form-without-a-class
答案 1 :(得分:0)
我发现了问题所在。它的翻译。
我克罗地亚语和网站我的建筑有两种语言,英语和克罗地亚语,英语作为默认语言环境。翻译以各种方式完成,但表格的翻译和表格中的所有翻译都是通过messages.en.php完成的。
对于翻译,我选择数组类型。 message.en.php
看起来像这样......
... Some data to translate ...
'Ime' : 'Personal name or bussiness'
'Email' : 'Email address
... Some other data to translate
所以,当树枝试图渲染这个......
form_label(form.ime, 'Ime')
它呈现了密钥Ime
的翻译。同样的事情发生在电子邮件领域。其他一切都井然有序。我刚刚将标签值更改为&#39;搜索名称&#39;或类似的东西。
至于如何将翻译限制为只有一种形式,我不知道。我阅读翻译部分但无法找到任何内容。