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.6的数据库中的s ID_Php_Symfony_Fosuserbundle - Fatal编程技术网

Php 保存用户';使用Symfony 2.6的数据库中的s ID

Php 保存用户';使用Symfony 2.6的数据库中的s ID,php,symfony,fosuserbundle,Php,Symfony,Fosuserbundle,仍在与Symfony交涉,因此如果已经有人问过,请原谅。我不太明白如何将数据发送到表单以便正确处理,因此我需要一些指导 我的问题是,我希望在创建新gecko时,将登录用户的ID保存到数据库中(以便此gecko的配置文件仅显示此登录用户)。顺便说一下,我用的是FOSUserBundle 我知道我可以通过使用像$user=$this->getUser()->getId()这样的东西来获取当前用户的idhandleRequest($request)后跟if($form->isValid()){就足够了

仍在与Symfony交涉,因此如果已经有人问过,请原谅。我不太明白如何将数据发送到表单以便正确处理,因此我需要一些指导

我的问题是,我希望在创建新gecko时,将登录用户的ID保存到数据库中(以便此gecko的配置文件仅显示此登录用户)。顺便说一下,我用的是FOSUserBundle

我知道我可以通过使用像
$user=$this->getUser()->getId()这样的东西来获取当前用户的id
创建操作:

public function createAction(Request $request)
    {
        $entity = new Gecko();
        $form = $this->createCreateForm($entity);
        $form->handleRequest($request);

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

            return $this->redirect($this->generateUrl('gecko_show', array('name' => $entity->getName())));
        }

        return array(
            'entity' => $entity,
            'form'   => $form->createView(),
        );
    }
壁虎型:

<?php

namespace Breedr\GeckoBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;

class GeckoType extends AbstractType
{
    /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('name')
            ->add('aquisitionDate')
            ->add('morph')
            ->add('sex', 'choice', array(
                'choices' => array(
                    'Male' => 'Male',
                    'Female' => 'Female'
                )
            ))
            ->add('genetics')
            ->add('bio')
            ->add('bred', 'checkbox', array(
                'required' => false
            ))
            ->add('hatchling', 'checkbox', array(
                'required' => false
            ))
            ->add('clutch', 'text', array(
                'data' => 0,
                'required' => false
            ))
            ->add('imageFile', 'file', array(
                'required' => false
            ))
            ->add('user_id', 'hidden', array(
                'data' => $user,
            ))
        ;
    }

    /**
     * @param OptionsResolverInterface $resolver
     */
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'Breedr\GeckoBundle\Entity\Gecko'
        ));
    }

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

首先,如果您知道这一点,很抱歉,但您需要在Gecko和用户实体之间建立正确的关系

请注意,您的@ORM注释可能与我的注释不同(或者您可以使用YAML或其他任何东西)。我的用途是:

use Doctrine\ORM\Mapping as ORM;
这应该在Gecko实体中

/**
 * @ORM\ManyToOne(targetEntity="Your\NameSpace\Entity\User", inversedBy="geckos")
 * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
 */
protected $user;
这应该在您的用户实体中

/**
 * @ORM\OneToMany(targetEntity="Your\NameSpace\Entity\Gecko",mappedBy="user")
 */
protected $geckos;
请注意,您需要等

要保存您的新壁虎:

$gecko = new Gecko();
$gecko->setUser($this->getUser());

$form = $this->createForm(new GeckoType(), $gecko);

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

if ($request->isMethod('POST')) {

    $form->submit($request);

    if ($form->isValid()) {

        $entityManager->persist($gecko);
        $entityManager->flush();

        // do something with success

    } else {

        // show errors by flash message or whatever
    }
}

我建议您仔细阅读symfony&as,它提供了您入门所需的大部分信息。

首先,如果您知道这一点,很抱歉,但您需要在Gecko和用户实体之间建立正确的关系

请注意,您的@ORM注释可能与我的注释不同(或者您可以使用YAML或其他任何东西)。我的用途是:

use Doctrine\ORM\Mapping as ORM;
这应该在Gecko实体中

/**
 * @ORM\ManyToOne(targetEntity="Your\NameSpace\Entity\User", inversedBy="geckos")
 * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
 */
protected $user;
这应该在您的用户实体中

/**
 * @ORM\OneToMany(targetEntity="Your\NameSpace\Entity\Gecko",mappedBy="user")
 */
protected $geckos;
请注意,您需要等

要保存您的新壁虎:

$gecko = new Gecko();
$gecko->setUser($this->getUser());

$form = $this->createForm(new GeckoType(), $gecko);

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

if ($request->isMethod('POST')) {

    $form->submit($request);

    if ($form->isValid()) {

        $entityManager->persist($gecko);
        $entityManager->flush();

        // do something with success

    } else {

        // show errors by flash message or whatever
    }
}

我建议您仔细阅读symfony&as,它提供了您入门所需的大部分信息。

首先,如果您知道这一点,很抱歉,但您需要在Gecko和用户实体之间建立正确的关系

请注意,您的@ORM注释可能与我的注释不同(或者您可以使用YAML或其他任何东西)。我的用途是:

use Doctrine\ORM\Mapping as ORM;
这应该在Gecko实体中

/**
 * @ORM\ManyToOne(targetEntity="Your\NameSpace\Entity\User", inversedBy="geckos")
 * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
 */
protected $user;
这应该在您的用户实体中

/**
 * @ORM\OneToMany(targetEntity="Your\NameSpace\Entity\Gecko",mappedBy="user")
 */
protected $geckos;
请注意,您需要等

要保存您的新壁虎:

$gecko = new Gecko();
$gecko->setUser($this->getUser());

$form = $this->createForm(new GeckoType(), $gecko);

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

if ($request->isMethod('POST')) {

    $form->submit($request);

    if ($form->isValid()) {

        $entityManager->persist($gecko);
        $entityManager->flush();

        // do something with success

    } else {

        // show errors by flash message or whatever
    }
}

我建议您仔细阅读symfony&as,它提供了您入门所需的大部分信息。

首先,如果您知道这一点,很抱歉,但您需要在Gecko和用户实体之间建立正确的关系

请注意,您的@ORM注释可能与我的注释不同(或者您可以使用YAML或其他任何东西)。我的用途是:

use Doctrine\ORM\Mapping as ORM;
这应该在Gecko实体中

/**
 * @ORM\ManyToOne(targetEntity="Your\NameSpace\Entity\User", inversedBy="geckos")
 * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
 */
protected $user;
这应该在您的用户实体中

/**
 * @ORM\OneToMany(targetEntity="Your\NameSpace\Entity\Gecko",mappedBy="user")
 */
protected $geckos;
请注意,您需要等

要保存您的新壁虎:

$gecko = new Gecko();
$gecko->setUser($this->getUser());

$form = $this->createForm(new GeckoType(), $gecko);

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

if ($request->isMethod('POST')) {

    $form->submit($request);

    if ($form->isValid()) {

        $entityManager->persist($gecko);
        $entityManager->flush();

        // do something with success

    } else {

        // show errors by flash message or whatever
    }
}

我建议您仔细阅读symfony&as,它包含了入门所需的大部分信息。

如果不需要外部的
。A
$form->handleRequest($request)后跟
if($form->isValid()){
就足够了。我现在要试试看它是否有效。我知道关系,但我不确定我是否需要它。谢谢你,我会很快报告任何问题:)@keyboardSmasher我掉了外部if,它确实工作得很好:)外部if
没有必要。A
$form->handleRequest($request);
后跟
if($form->isValid()){
就足够了。我现在要试试看它是否有效。我知道关系,但我不确定我是否需要它。谢谢你,我会很快报告任何问题:)@keyboardSmasher我掉了外部if,它确实工作得很好:)外部if
没有必要。A
$form->handleRequest($request);
后跟
if($form->isValid()){
就足够了。我现在要试试看它是否有效。我知道关系,但我不确定我是否需要它。谢谢你,我会很快报告任何问题:)@keyboardSmasher我掉了外部if,它确实工作得很好:)外部if
没有必要。A
$form->handleRequest($request);
后跟
if($form->isValid()){
就足够了。我现在就去试试看它是否有效。我知道关系,但我不确定我是否需要它来做这件事。谢谢你,如果有任何问题,我会很快报告:)@keyboardSmasher我掉了外部的if,它确实工作得很好:)