我已经在symfony文档中应用了这个示例,以减少代码重复与" inherit_data"。
http://symfony.com/doc/current/form/inherit_data_option.html
public function buildForm(FormBuilderInterface $builder, array $options)
{
// ...
$builder->add('foo', LocationType::class, array(
'data_class' => 'AppBundle\Entity\Company'
));
}
它运作良好但是当我使用带有 GET 方法的搜索表单时,我会得到一个这样的网址:
foo%5Baddress%5D=some+address&foo%5Bzipcode%5D=5000&foo%5Bcity%5D=paris&foo%5Bcountry%5D=france
我希望网址像这样:
address=some+address&zipcode=5000&city=paris&country=france
我该怎么做?
答案 0 :(得分:2)
您需要一个平面(非嵌套)表单字段名称。如果您想阅读技术细节,请参阅this issue和此pull request。
我找到了一些例子here。如果您使用的是Symfony 2,this example也会有所帮助。我找到了两个related questions。
使用createNamed
方法创建表单,并将第一个参数($name
)设置为null
:
$form = $this->get('form.factory')->createNamed(null, new MyFormType(), $dataObject, $formOptions);
或者,您可以使用getBlockPrefix
的{{1}}方法将名称设置为FormType
null