树枝模板上表单字段的 setValue

setValue of a form field on twig template

我尝试在twig 模板上设置登录的用户信息,但找不到方法。 特别是,我尝试制作一个评论部分,我希望用户只写评论 text.Doing 所以,我想在模板树枝上设置作者(app.user.username),因为我无法获取用户信息在控制器文件上。

所以在我的控制器文件中,在函数显示中,我把这个:

 if($form->isSubmitted() && $form->isValid()  ){
        $comment->setCreatedAt(new \DateTime())
                ->setExercice($exercice)
                //would like to do it but cannot
                //->setAuthor(app.user.username);

所以我寻找一种方法来制作类似

的东西

{{form_row(commentForm.author,{'attr': { 'value': app.user.username, 'class':hidden }})}}

有办法吗?

我得到的错误是:

Variable "hidden" does not exist.

您最初的错误 Variable "hidden" does not exist. 发生是因为您试图引用 hidden 就好像它是变量或常量,而不是文字字符串。要将它用作文字字符串,您需要引用它:

{{ form_row(commentForm.author, {attr: {
    value: app.user.username,
    class: 'hidden'
}}) }}

您不需要引用数组的键(例如 value:class:),因为非标量值不能用作键。

然而,正如@msg 指出的那样,您不应依赖视图上的表单来获取用户详细信息。这会打开表格进行操纵,这意味着任何人都可以在发布的任何评论中冒充其他人。绝对在控制器期间直接填充 comment 实体的该字段。 -- 如果您在检查表单是否已提交之前执行此操作,则该信息也将可用于视图,例如将 $comment 暴露给视图意味着 {{ comment.username }} 也可以工作。