簡體   English   中英

Symfony2在將數據傳遞到表單下拉列表時遇到麻煩

[英]Symfony2 trouble passing data into form dropdown

我正在學習symfony,現在這個問題困擾了我幾個小時。 我正在嘗試從FOSuserbundle獲取用戶ID到我自己的表單的Dropdown中。 但是無法成功..我猜__construct函數做錯了..這是代碼

ShiftType.php

class ShiftType extends AbstractType
{
    protected $users;

        public function __construct (User $users)
        {
            $this->users = $users;
        }

    public function buildForm(FormBuilderInterface $builder, array $options)
    {

        $user = $this->user;

        $builder
            ->add('date', 'date', array(
                'label' => 'Shift Date',
                'attr' => array(
                    'class' => 'form-control'
                )
            ))

            ->add('site_name', 'text', array(
                'label' => 'Site Name',
                'attr' => array(
                    'class' => 'form-control'
                )
            ))

            ->add('location', 'text', array(
                'label' => 'Site Location',
                'attr' => array(
                    'class' => 'form-control'
                )
            ))

            ->add('startTime', 'time', array(
                'label' => 'Start time',
                'attr' => array(
                    'class' => 'form-control'
                )
            ))

            ->add('endTime', 'time', array(
                'label' => 'End time',
                'attr' => array(
                    'class' => 'form-control'
                )
            ))

            ->add('employee', 'button', array(
                'class' => 'UserBundle:user',
                'label' => 'Select Employee',
                'attr' => array(
                    'data-toggle' => 'dropdown',
                    'class' => 'form-control btn btn-default dropdown-toggle',
                    'query_builder' => function(EntityRepository $er) use ($users) {
                            return $er->createQueryBuilder('pp')
                                ->where("pp.username = :username")
                                ->orderBy('pp.index', 'ASC')
                                ->setParameter('users', $users)
                            ;
                        },
                )
            ))


            ->add('save', 'submit', array(
                'attr' => array(
                    'class' => 'btn btn-lg btn-primary'
                )
            ));
    }

    public function getName()
    {
        return 'shifts';
    }

}

我也對我的QueryBuilder函數有疑問。 如果我做對與否。

這是我的控制器

public function shiftAction(Request $request)
    {
        $shift = new Shifts();

        $em = $this->getDoctrine()->getManager();

        $users = new User;

        $users = $em->getRepository('UserBundle:User')
                ->findAll();

        //var_dump($users);

        $form = $this->createForm(new ShiftType($users), $shift);

        $form->handleRequest($request);


        if ($form->isValid()) {

            $em->persist($shift);
            $em->flush();

            return $this->redirect($this->generateUrl('allshifts'));
        }

        return $this->render('XYZFirstBundle:Default:shifts.html.twig', array(
                'shiftForm' => $form->createView(),
            ));
    }   

我一直在收到這個錯誤

ContextErrorException:可捕獲的致命錯誤:傳遞給XYZ \\ FirstBundle \\ Form \\ Type \\ ShiftType :: __ construct()的參數1必須是XYZ \\ FirstBundle \\ Form \\ Type \\ User的實例,給定數組,在/ var / www / html中調用第33行的/learnsymfony/src/XYZ/FirstBundle/Controller/DefaultController.php,並在/var/www/html/learnsymfony/src/XYZ/FirstBundle/Form/Type/ShiftType.php第12行中定義

public function __construct (User $users)

該行表明函數__construct希望將一個User對象傳遞給它,但是在您的控制器中,您傳遞了一個數組

$users = $em->getRepository('UserBundle:User')->findAll(); // array of User objects

$form = $this->createForm(new ShiftType($users), $shift);

函數API: http : //www.doctrine-project.org/api/orm/2.2/class-Doctrine.ORM.EntityRepository.html#_findAll

暫無
暫無

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

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