2016-11-16 52 views
0

我開始學習symfony 3.對於第一個項目,我選擇了一個簡單的totodlist。將數據表格數據庫放入checkbox symfony 3

所以,現在我有可能創建並保存在我的數據庫中的用戶。接下來我可以爲他們創建一個任務。

我想創建一個複選框,我可以在哪裏選擇用戶執行任務。

所以我需要把數據從我的用戶數據庫複選框的形式($ temp_users varbiable)。我不知道該怎麼做。

任何人都可以告訴我該怎麼做。

下面

是我的代碼:

public function createAction(Request $request) 
{ 

    $todo = new Todo; 

    $users = $this->getDoctrine() 
    ->getRepository('AppBundle:User') 
    ->findAll(); 

    $temp_users = array(); 
    foreach($users as $user) { 
    $temp_users[$user->getUsername()] = $user->getId(); 

}

$form = $this->createFormBuilder($todo) 
    ->add('name', TextType::class, array('attr' => array('class' => 'form-  control', 'style' => 'margin-bottom:15px'))) 


    ->add('wykona', CheckboxType::class, array('label' => $temp_users, 'required' => false,)) 

回答

0

我不知道你所說的複選框的意思 - 你想選擇一個或多個用戶?我想假設你只是爲了簡單起見而選擇一個(你可以根據自己的喜好來調整它)

你不需要讓所有的用戶像你想要做的那樣,應該像這樣工作(未經測試)

$form = $this->createFormBuilder($todo) 
    ->add('user', EntityType::class, array(
     'label' => 'Name', 
     'class' => AppBundle\Entity\User::class, 
     'choice_label' => 'name', //if you have a variable 'name' in your User entity, otherwise you will need a __toString method in the User entity 
    )); 
0

試試你的createAction這裏面的代碼。

加入到你的代碼

$form = $this->createFormBuilder($todo) 
     ->add('users', EntityType::class, array(
       'class' => 'AppBundle:User', 
       'query_builder' => function (EntityRepository $er) { 
        return $er->createQueryBuilder('u') 
           ->orderBy('u.name', 'ASC') 
         }, 
       'choice_label' => 'name', 
       'multiple' => true, 
       'expanded' => true, 
      )); 

這也是你不要再需要內部createAction下面的代碼。

刪除下面的代碼從代碼

$users = $this->getDoctrine() 
     ->getRepository('AppBundle:User') 
     ->findAll(); 

$temp_users = array(); 
foreach($users as $user) { 
$temp_users[$user->getUsername()] = $user->getId();