【问题标题】:Is it possible to call one of an entity's getter methods from Twig?是否可以从 Twig 调用实体的 getter 方法之一?
【发布时间】:2014-02-05 14:50:26
【问题描述】:

我有一个像下面这样的实体:

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;

}

在将实体传递给 Twig 后,我可以像这样访问 Twig 中的$errorNum 属性:

{{ item.errorNum }}

但是我想从 Twig 访问 getErrorNum() 方法。

我该怎么做?

【问题讨论】:

  • 在类名中最好使用大写的第一个字符,例如class Item

标签: php symfony twig


【解决方案1】:

可以直接在twig中获取方法:

{{ item.getErrorNum() }}

但是如果你的errorNum属性是private,twig自己会调用它的getter,所以当你使用时

{{ item.errorNum }}

twig 都是一样的 getter getErrorNum()

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

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

其中$itemItem 类对象

【讨论】:

    【解决方案2】:

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

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

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

    {{item.errorNum}}
    

    你也可以访问方法:

    {{item.ErrorNum}}
    

    【讨论】:

    • 此答案包含错误信息。将私有 errorNum 更改为受保护的 errorNum 是没有意义的,这不会改变树枝访问该属性的能力。 Victor 的答案应该是公认的答案。
    • @Omn 确实会:-D
    • @Dev_NIX 它不会改变提供的代码示例。如果 errorNum 是私有的,则会自动调用公共的 getErrorNum() 方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    • 1970-01-01
    • 2017-01-26
    • 1970-01-01
    • 2013-09-25
    • 1970-01-01
    相关资源
    最近更新 更多