簡體   English   中英

Symfony 2 / Twig和復選框的集合

[英]Symfony 2 / Twig and a collection of checkboxes

在我的應用程序中,我需要顯示一組復選框,用戶可以使用它們指示某些選擇。 在我的情況下,它指的是“區域”,即區域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

您將需要第二個FormType。

您要調用的第一種形式應如下所示:

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

然后第二種形式應如下所示:

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

我只是寫了這個,所以我不知道它是否可以工作,但是這是您必須采用的方法,我已經在我的一個項目中做了類似的事情

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM