我想在twig模板上设置登录的用户信息,但我找不到方法,特别是我想做一个评论区,我希望用户只写评论文字,这样做,我想在twig模板上设置作者( app.user.username),因为我无法在Controller文件中获取用户信息。
所以在我的Controller文件中,在函数show中,我放了这个。
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 }}
也是可以的。