2013-09-27 66 views
0

玉傢伙,基於與整數字段實體Symfony2的形式+學說 - 選擇選擇

我有表的建立,

iduser_idproject_idstatsrisks

現在我試圖建立僅有字段statsrisk的表格。所以,我選擇通過userIdprojectId

$dql = "SELECT m FROM DevDashProjectBundle:Module m WHERE m.user =" 
    .$options['user']->getId()."AND m.project =" 
    .$options['project']->getId(); 
$results = $this->entityManager->createQuery($dql)->getArrayResult(); 

現在我想建立形式,其中以價值>0(或真或某物)字段統計選擇和0(或假的)沒有被選中。接下來,在編輯表單之後,我想發佈對此字段的更改 - 所以選擇的字段是1,未選擇0

@Edit

我的實體看起來是這樣的:當你看到

/** 
* @ORM\Column(name="stats", type="boolean", nullable=false) 
* 
* @var boolean 
*/ 
protected $stats=true; 

缺省值是true。

這樣

在控制器我傳遞值:

$form = $this->createForm(new ModuleType($em), $module, array('user' => $user, 'project' => $project)); 

$用戶和$項目都需要選擇合適的行。

接着在ModuleType

 $builder 
     ->add('module', 'checkbox', array(
      'label' => 'Stats', 
     )); 

表模塊,得到了場統計其是TINYINT(由Symfony的解釋爲布爾值)設定爲1,但該複選框統計仍然是未選中狀態。

我也嘗試某事像這樣:

 $builder 
     ->add('module', 'entity', array(
      'class' => 'DevDashProjectBundle:Module', 
      'mapped' => true, 
      'multiple' => true, 
      'expanded' => true, 
      'property' => 'stats', 
      'query_builder' => function(EntityRepository $er) use ($options){ 
       return $er 
        ->createQueryBuilder('m') 
        ->where(
         'm.user =' .$options['user']->getId(). 
         'AND m.project=' .$options['project']->getId() 
        ); 
      } 
     ) 
    ); 

怎麼一回事,因爲我需要選擇USER_ID和PROJECT_ID統計。查詢返回正確的值,但值爲true的複選框仍未選中。

回答

1

你將建立在這樣的模塊實體的形式:

$form = $this->createFormBuilder($module) 
     ->add('stats', 'checkbox', array('label' => 'Stats')) 
     ->getForm(); 

但在實體的統計字段必須聲明爲布爾值。 參見這個問題也:PHP/Symfony2 Form Checkbox field

編輯: 此: $ builder->加( '模塊', '複選框',陣列( '標籤'=> '統計信息'));

應該是 $ builder-> add('stats','checkbox',array('label'=>'Stats'));

匹配您的字段的名稱。