Forms Symfony2-创建表单需要传入登录用户
我有一个回复邮件的回复表单设置 我想将作者设置为当前登录的用户。现在,它只是一个已经发布的以前作者的下拉菜单,这不是我想要的 如何将其设置为使用当前登录的用户名作为作者,而不是将作者列表保存到数据库中 是否有一个全局命令来访问当前登录的用户,以传入表单中的添加('author)行 回复类型表格Forms Symfony2-创建表单需要传入登录用户,forms,symfony,author,Forms,Symfony,Author,我有一个回复邮件的回复表单设置 我想将作者设置为当前登录的用户。现在,它只是一个已经发布的以前作者的下拉菜单,这不是我想要的 如何将其设置为使用当前登录的用户名作为作者,而不是将作者列表保存到数据库中 是否有一个全局命令来访问当前登录的用户,以传入表单中的添加('author)行 回复类型表格 class ReplyType extends AbstractType { /** * {@inheritDoc} */ public function buildForm(FormBuilderI
class ReplyType extends AbstractType
{
/**
* {@inheritDoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('author')
->add('body')
->add('post', 'submit');
}
/**
* {@inheritDoc}
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Acme\DemoBundle\Entity\Reply'
));
}
/**
* {@inheritDoc}
*/
public function getName()
{
return 'acme_demobundle_reply';
}
}
回复实体
/**
* @var Author
*
* @ORM\ManyToOne(targetEntity="Author", inversedBy="replies")
* @ORM\JoinColumn(name="author_id", referencedColumnName="id", nullable=false)
* @Assert\NotBlank
*/
private $author;
既然登录用户是作者,那么删除该字段并将作者设置为控制器中当前登录的用户如何?用户不应实际选择作者(即:参见Stackoverflow.com回复或评论表单) 您的表单类型将变为:
class ReplyType extends AbstractType
{
/**
* {@inheritDoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('body')
->add('post', 'submit');
}
/**
* {@inheritDoc}
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Acme\DemoBundle\Entity\Reply'
));
}
/**
* {@inheritDoc}
*/
public function getName()
{
return 'acme_demobundle_reply';
}
}
既然登录用户是作者,那么删除该字段并将作者设置为控制器中当前登录的用户如何?用户不应实际选择作者(即:参见Stackoverflow.com回复或评论表单) 您的表单类型将变为:
class ReplyType extends AbstractType
{
/**
* {@inheritDoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('body')
->add('post', 'submit');
}
/**
* {@inheritDoc}
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Acme\DemoBundle\Entity\Reply'
));
}
/**
* {@inheritDoc}
*/
public function getName()
{
return 'acme_demobundle_reply';
}
}
谢谢你的建议,问题。我将回复实体设置为多对一的作者实体。基于您的解决方案,我应该如何处理这两个实体?当我从表单中删除->添加('author')时,该值不应为空。请参见上面的回复实体。我删除了与Reply和Author的关系,并在Reply中将Author作为字符串值。现在,当我试图保存一个回复时,我得到了以下信息:
ContextErrorException:Catchable致命错误:类Acme\DemoBundle\Entity\User的对象无法转换为/var/www/html/SymChatter/vendor/doctor/dbal/lib/doctor/dbal/Statement.php行120
得到它,使用了公共函数
修复了错误,现在使用$this->getUser()
作为作者。谢谢你的帮助和解释,绦虫!谢谢你的建议,问题。我将回复实体设置为多对一的作者实体。基于您的解决方案,我应该如何处理这两个实体?当我从表单中删除->添加('author')时,该值不应为空。请参见上面的回复实体。我删除了与Reply和Author的关系,并在Reply中将Author作为字符串值。现在,当我试图保存一个回复时,我得到了以下信息:ContextErrorException:Catchable致命错误:类Acme\DemoBundle\Entity\User的对象无法转换为/var/www/html/SymChatter/vendor/doctor/dbal/lib/doctor/dbal/Statement.php行120
得到它,使用了公共函数
修复了错误,现在使用$this->getUser()
作为作者。谢谢你的帮助和解释,绦虫!