Php 保存用户';使用Symfony 2.6的数据库中的s ID
仍在与Symfony交涉,因此如果已经有人问过,请原谅。我不太明白如何将数据发送到表单以便正确处理,因此我需要一些指导 我的问题是,我希望在创建新gecko时,将登录用户的ID保存到数据库中(以便此gecko的配置文件仅显示此登录用户)。顺便说一下,我用的是FOSUserBundle 我知道我可以通过使用像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()){就足够了
$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,它确实工作得很好:)