symfony 2表单:我想使用自定义字段名称属性或操作表单

时间:2015-08-27 15:18:49

标签: php forms symfony

我正在尝试使用Symfony 2表单在控制器中轻松使用Doctrine findBy API。

实际上,我想在我的Controller中编写这段代码:

$repository->findBy(
    $request->get('filters'),
    $request->get('orderBy'),
    $request->get('limit'),
    $request->get('offset')
);

为此,我的网址应如下所示!

  • /会话?过滤器[用户] = 4
  • /会话滤波器[用户] = 4和;过滤器[年] = 2014&安培; ORDERBY =日期和安培;限制= 10

为了能够为我的用户提供此功能,我希望使用一种解决方案:

解决方案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">

哪个不符合网址要求。有人知道如何使用自定义名称属性吗? 如果我有机会将属性名称更改为表单[过滤器] [某事物] 或甚至更好过滤器[某事物] ,它也会有效。

1 个答案:

答案 0 :(得分:0)

我不确定,因为我从未这样做,但是,为什么不尝试使用collection类型?

$this->createFormBuilder()
    ->add('filters', 'collection', array(
        'choices' => array(
            'user',
            'year',
        )
    ))
    [...]

但是我不确定您是否希望通过get获取传递参数:如果您有一个表单并且网址不能从&#34;外部&#34;你的应用程序,POST好多了