我正在尝试使用Symfony 2表单在控制器中轻松使用Doctrine findBy API。
实际上,我想在我的Controller中编写这段代码:
$repository->findBy(
$request->get('filters'),
$request->get('orderBy'),
$request->get('limit'),
$request->get('offset')
);
为此,我的网址应如下所示!
为了能够为我的用户提供此功能,我希望使用一种解决方案:
解决方案n°1
$this->createFormBuilder()
->add('filters', 'array')
->add('user', 'integer')
->add('year', 'integer')
->add('orderBy')
->add('limit')
->add('offset')
;
但是这个解决方案或等价物不存在。 (类型数组不存在)
解决方案n°2
$this->createFormBuilder()
->add('filters[user]', 'integer')
->add('filters[year]', 'integer')
->add('orderBy')
->add('limit')
->add('offset')
;
不允许使用'['和']'字符并产生错误。
另一个解决方案是使用自定义字段名称,实际上第一个解决方案(没有不存在类型的“数组”)将生成此HTML:
<input type="text" id="form_filters" name="form[filters]" required="required" class="form-control">
哪个不符合网址要求。有人知道如何使用自定义名称属性吗? 如果我有机会将属性名称更改为表单[过滤器] [某事物] 或甚至更好过滤器[某事物] ,它也会有效。
答案 0 :(得分:0)
我不确定,因为我从未这样做,但是,为什么不尝试使用collection
类型?
$this->createFormBuilder()
->add('filters', 'collection', array(
'choices' => array(
'user',
'year',
)
))
[...]
但是我不确定您是否希望通过get获取传递参数:如果您有一个表单并且网址不能从&#34;外部&#34;你的应用程序,POST好多了