我在Twig中遇到用户变量时遇到问题。 当我在做一个var_dump(app.user)时,我得到以下内容:
object(App\Bundle\CoreBundle\Entity\Employee)[1233]
protected 'id' => int 1
private 'group' => int 0
protected 'fullName' => string 'Daniel Mensing' (length=14)
protected 'username' => string 'dm' (length=2)
protected 'usernameCanonical' => string 'dm' (length=2)
我添加了“fullName”,这不是FOSUSerbundle的一部分。
现在,当我尝试在twig中输出新变量(fullName)时,它告诉我它不存在(??)虽然标准变量工作正常(用户名,电子邮件..)起初我认为这是因为我将fullName设为私有,但在受到保护时也无法工作。同样在vardump中,它们看起来完全一样
我输出的变量如下:{{ app.user.username }}
或{{ app.user.fullName }}
Any1可以指向正确的方向吗?或者帮助解释我做错了什么。 非常感谢任何帮助:-)谢谢
答案 0 :(得分:3)
在Twig中,您可以通过以下几种方法访问对象变量:
公共变量。 user.fullName直接指向用户对象变量,就像在php中调用$ object-> fullName
公共方法。 user.fullName指向用户对象的getFullName()
方法,就像在php中调用$ object-> getFullName()一样。
因此要么将fullName设为public,要么添加getFullName()
方法(推荐)。
答案 1 :(得分:2)
protected
表示变量值仅适用于相同的类和子类实例,但不能用于其他任何地方。
为您提供适当的public
吸气剂,例如public function getFullname(){ return $this -> fullName; }
。
答案 2 :(得分:1)
您必须在fullName
实体中添加App\Bundle\CoreBundle\Entity\Employee
字段的getter:
public function getFullName() {
return $this->fullName;
}