与实体的symfony形式选择得到结果

外来的

我正在尝试获取选择表的结果。

形式是这样的:

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

    $form = $this->createFormBuilder($users)
    ->add('users', 'entity', array(
        'label' => 'Pick that user',
        'class' => 'UserBundle:User',
        'choice_label' => 'usFirstname'))
        ->add('save', 'submit', array('label' => 'Submit'));

然后,我想让用户选择,我尝试了几种方法,但没有任何效果……应该是这样的:

$user_picked = 
$em->getRepository('UserBundle:User')->
findBy(array('usFirstname' => $form->getForm()->get('users')->getData()));

单击“提交”按钮后,如何使用户被选中?

鲁尼

表单构建器的魔力为您完成了这项工作。
如果转储数据dump($form->get('users')->getData()),它将是表单中可供选择的用户实例。无需执行额外的查询。

此外,choice_label仅过滤选择选项文本中的内容,而不是值。

例子;

<?php
namespace AppBundle\Controller;

use AppBundle\Entity\User,
    AppBundle\Form\MyFormType;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route,
    Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter,
    Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;
use Symfony\Component\HttpFoundation\Request,
    Symfony\Bundle\FrameworkBundle\Controller\Controller;

class MyController extends Controller 
{
    public function addAction(Request $request)
    {
        $form = $this->createForm(new MyFormType(), null, []);
        $form->add('submit', 'submit', [
                'label' => 'Create',
                'attr'  => ['class' => 'btn btn-success pull-right']
            ]
        );
        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()) {
            dump($form->get('users')->getData());
            exit(0);
        }

        return $this->render('AppBundle:user:form.html.twig', [
                'form' => $form->createView()
            ]
        );
    }
}

<?php 
namespace AppBundle\Form;

use Symfony\Component\Form\AbstractType,
    Symfony\Component\Form\FormBuilderInterface,
    Symfony\Component\OptionsResolver\OptionsResolver,
    Symfony\Component\Validator\Constraints as Assert;

    class MyFormType extends AbstractType
    {

        /**
         * @param FormBuilderInterface $builder
         * @param array $options
         */
        public function buildForm(FormBuilderInterface $builder, array $options)
        {
            $builder->add('users', 'entity', [
                'required' => false,
                'class' => 'AppBundle:User',
                'choice_label' => 'usFirstname',
                'expanded' => false,
                'multiple' => false,
            ]);
        }

        /**
         * @param OptionsResolver $resolver
         */
        public function configureOptions(OptionsResolver $resolver)
        {
            $resolver->setDefaults(array(
                'data_class' => null,
            ));
        }

        /**
         * @return string
         */
        public function getName()
        {
            return 'my_form';
        }

    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章