【发布时间】:2015-04-30 23:45:00
【问题描述】:
仍然在使用 Symfony,所以如果有人问过这个问题,请原谅。我不太明白如何将数据发送到表单以进行正确处理,因此需要一些指导。
我的问题是我希望在他们创建新壁虎时将我的登录用户 ID 保存到数据库中(这样壁虎的个人资料只显示此登录用户)。顺便说一句,我正在使用 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';
}
}
我非常感谢任何帮助。我只是无法理解数据是如何使用/发送的。在此先感谢:)
安迪
【问题讨论】:
标签: php symfony fosuserbundle