Symfony2& Twig,让用户变量

时间:2014-02-14 09:13:08

标签: php symfony twig

我在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可以指向正确的方向吗?或者帮助解释我做错了什么。 非常感谢任何帮助:-)谢谢

3 个答案:

答案 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;
}