【问题标题】:Symfony 2 / Twig and a collection of checkboxesSymfony 2 / Twig 和一组复选框
【发布时间】:2015-03-31 08:33:41
【问题描述】:

在我的应用程序中,我需要显示一组复选框,用户可以使用这些复选框指示某些选择。就我而言,它指的是“区域”,即 A 区、B 区、C 区等。

我遇到的问题是如何使用框架提供的FormBuilderInterface 在我的表单类型类中构造它。

文档引用了“集合”类型 [1],这似乎是我需要的,但我无法连接复选框元素 [2]。该文档似乎只为单个复选框提供了一个示例,但我需要它用于一个组。

这是我目前所拥有的(为简洁起见,我省略了其他字段):

class FormType extends AbstractType {

  public function buildForm( FormBuilderInterface $builder, array $options )
  {
    $builder
      ->add('zones', 'collection',
        array(
          'type' => 'checkbox',
          'options'  => array(
            'zone-a' => 'Zone A',
            'zone-b' => 'Zone B',
            'zone-c' => 'Zone C',
          )
        )
      )
    ;
  }

}

还有数据类(如果你愿意,可以形成模型):

class FormData {

  protected $zones = [];

  public function __construct( array $zones = NULL )
  {
    if( ! empty( $zones ) )
    {
      $this->setZones( $zones );
    }
  }

  public function getZones()
  {
    return $this->zones;
  }

  public function setZones( $zones )
  {
    $this->zones = $zones;
  }

}

这就是我渲染表单元素的方式(目前):

{{ form_row(form.zones) }}

但是,上面只输出一个名为 Zones 的标签,没有别的。

如何在 Symfony 2 / Twig 应用程序中正确呈现复选框的组/集合?

[1]http://symfony.com/doc/current/reference/forms/types/collection.html [2]http://symfony.com/doc/current/reference/forms/types/checkbox.html

【问题讨论】:

    标签: php forms symfony checkbox twig


    【解决方案1】:

    您将需要第二个 FormType。

    您调用的第一个表单应如下所示:

    $builder
      ->add('zones', 'collection',
        array(
          'type' => new FormDataType(),
          'options'  => array(
             .....
          )
        )
      )
    

    然后第二种形式应该是这样的:

    class FormDataType extends AbstractType  {
     ...
       $builder
          ->add('checkBox1', 'checkbox', ...)
          ->add('checkBox2', 'checkbox', ...)
          ....
    }
    

    我刚写了这个,所以我不知道它是否会起作用,但这是你必须采用的方法,我已经在我的一个项目中做过类似的事情

    【讨论】:

      猜你喜欢
      • 2014-01-14
      • 2015-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-16
      相关资源
      最近更新 更多