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
Forms Symfony2-创建表单需要传入登录用户_Forms_Symfony_Author - Fatal编程技术网

Forms Symfony2-创建表单需要传入登录用户

Forms Symfony2-创建表单需要传入登录用户,forms,symfony,author,Forms,Symfony,Author,我有一个回复邮件的回复表单设置 我想将作者设置为当前登录的用户。现在,它只是一个已经发布的以前作者的下拉菜单,这不是我想要的 如何将其设置为使用当前登录的用户名作为作者,而不是将作者列表保存到数据库中 是否有一个全局命令来访问当前登录的用户,以传入表单中的添加('author)行 回复类型表格 class ReplyType extends AbstractType { /** * {@inheritDoc} */ public function buildForm(FormBuilderI

我有一个回复邮件的回复表单设置

我想将作者设置为当前登录的用户。现在,它只是一个已经发布的以前作者的下拉菜单,这不是我想要的

如何将其设置为使用当前登录的用户名作为作者,而不是将作者列表保存到数据库中

是否有一个全局命令来访问当前登录的用户,以传入表单中的添加('author)行

回复类型表格

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()
作为作者。谢谢你的帮助和解释,绦虫!