【问题标题】:put data form database into checkbox symfony 3将数据表单数据库放入复选框 symfony 3
【发布时间】:2017-03-30 09:06:30
【问题描述】:

我开始学习 symfony 3。对于第一个项目,我选择了一个简单的 totodlist。

所以现在我可以在我的数据库中创建和保存用户。接下来我可以为他们创建一个任务。

我想创建一个复选框,我可以在其中选择用户来执行任务。

所以我需要将我的用户数据库中的数据放入复选框表单($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,))

【问题讨论】:

    标签: php database forms checkbox symfony


    【解决方案1】:

    我不确定您所说的复选框是什么意思 - 您要选择一个用户还是多个用户?为简单起见,我假设您只想选择一个(您可以根据自己的喜好进行调整)

    您不需要像您想要的那样获取所有用户,这样的事情应该可以工作(未经测试)

    $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
        ));
    

    【讨论】:

      【解决方案2】:

      在您的 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();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-28
        • 1970-01-01
        • 2012-07-16
        • 2016-11-27
        • 2017-06-23
        相关资源
        最近更新 更多