Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在表单Symfony 2中嵌入当前用户id_Php_Symfony_Symfony Forms - Fatal编程技术网

Php 在表单Symfony 2中嵌入当前用户id

Php 在表单Symfony 2中嵌入当前用户id,php,symfony,symfony-forms,Php,Symfony,Symfony Forms,我正在尝试验证Symfony 2.3中的表单。我需要获取当前用户id并在我的数据库中提交 我的控制器: public function giftcardAction(Request $request) { $giftcard = new Giftcard(); $giftcard->setDate(new \DateTime()); $user = $this->container->get('security.co

我正在尝试验证Symfony 2.3中的表单。我需要获取当前用户id并在我的数据库中提交

我的控制器:

   public function giftcardAction(Request $request)
    {
        $giftcard = new Giftcard();
        $giftcard->setDate(new \DateTime());
        $user = $this->container->get('security.context')->getToken()->getUser();
        $userId = $user->getId();

        var_dump($userId);
        $form = $this->createFormBuilder($giftcard)
            ->add('amount', 'integer')
            ->add('onBehalfOf')
            ->add('towards')
            ->add('message', 'text')
//            ->add($userId)
            ->add('submit', 'submit')
            ->getForm();

        $form->handleRequest($request);

        if ($form->isValid()) {
            $em = $this->getDoctrine()->getManager();
            $em->persist($giftcard);
            $em->flush();

        }else{
            throw new NotFoundHttpException("Page not found");
           }
        }
            return $this->render('FrontBundle:Forms:giftcard.html.twig', array(
            'form' => $form->createView(),
        ));
    }
我的模板
目前,我可以在控制器的var_dump中获取用户id。但是我如何以形式传递变量。有人可以帮我吗。谢谢。

如果您希望将用户与礼品卡关联,我会为该实体创建一对一单向关系。然后在
if($form-isValid())
中,在持久化到数据库之前,您将执行类似于
$giftcard->setUser($user)
的操作。Doctrine或任何您使用的ORM将自动获取用户Id并将其放入数据库中。这也有助于将来当您检索礼品卡时,您不必执行额外的步骤将该id更改回用户,只需执行
$giftcard->getUser()
如果是单个id,为什么要使用数组UserId?如果您希望将用户与礼品卡关联,我将为该实体创建一对一单向关系。然后在
if($form-isValid())
中,在持久化到数据库之前,您将执行类似于
$giftcard->setUser($user)
的操作。Doctrine或任何您使用的ORM将自动获取用户Id并将其放入数据库中。这也有助于将来当您检索礼品卡时,您不必执行额外的步骤将该id更改回用户,只需执行
$giftcard->getUser()
如果是单个id,为什么要使用数组UserId?如果您希望将用户与礼品卡关联,我将为该实体创建一对一单向关系。然后在
if($form-isValid())
中,在持久化到数据库之前,您将执行类似于
$giftcard->setUser($user)
的操作。Doctrine或任何您使用的ORM将自动获取用户Id并将其放入数据库中。这也有助于将来当您检索礼品卡时,您不必执行额外的步骤将该id更改回用户,只要执行
$giftcard->getUser()
如果它是单个id,为什么要使用数组UserId?
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;

class GiftCardType extends AbstractType
{
    private $userId;

    public function __construct(array $userId)
    {
        $this->userId = $userId;
    }

    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('date')
            ->add('onBehalfOf')
            ->add('towards')
            ->add('message')
//            ->add('UserId')
        ;
    }

    /**
     * @param OptionsResolverInterface $resolver
     */
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'Front\Bundle\Entity\GiftCard',
        ));
    }

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