是否可以从树枝上调用实体getter

whi*_*ear 5 php symfony twig

我有这样的实体如下

class item
{
/**
 * @var integer
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;



/**
 * @ORM\Column(type="integer",nullable=true)
 */


private $errorNum;


public function getErrorNum()
{
    return $this->errorNUm * 3;

}
Run Code Online (Sandbox Code Playgroud)

在将实体传递给twig之后,我可以像这样访问twig中的errorNum.

{{ item.errorNum }}
Run Code Online (Sandbox Code Playgroud)

但是我想从twig中访问getErrorNum.

我该怎么做?

Vic*_*sky 16

你可以在树枝上直接获取方法:

{{ item.getErrorNum() }}
Run Code Online (Sandbox Code Playgroud)

但如果你的errorNum财产是private,twig自己称之为吸气剂,所以当你使用时

{{ item.errorNum }}
Run Code Online (Sandbox Code Playgroud)

twig是一样的get getter getErrorNum()

注意:要item在树枝中使用,您需要将此对象传递给操作中的模板,如:

return $this->render("AcmeDemoBundle:Blog:posts.html.twig", array('item' => $item))
Run Code Online (Sandbox Code Playgroud)

哪个$item是Item类对象


hiz*_*l25 5

首先,您应该将属性更改private errorNum为protected errorNum 然后从控制器返回:

return $this->render("AcmeDemoBundle:Product:create.html.twig", array('item' => $item));
Run Code Online (Sandbox Code Playgroud)

然后在您的树枝视图中,您可以访问属性:

{{item.errorNum}}
Run Code Online (Sandbox Code Playgroud)

您还可以访问方法:

{{item.ErrorNum}}
Run Code Online (Sandbox Code Playgroud)

  • 此答案包含不正确的信息.将私有errorNum更改为受保护的errorNum是没有意义的,这不会改变twigs能力访问属性.维克多的答案应该是公认的答案. (6认同)
  • @Dev_NIX 它不会改变所提供的代码示例。如果 errorNum 是私有的,则将自动调用公共 getErrorNum() 方法。 (2认同)