我想向实体添加一个方法。 此方法从实体的标题中返回 X 个字符,我想在我的 Twig 文件中打印此标题。 这可能吗?
Twig :
<ul class="nav nav-pills nav-stacked">
{% for blog in listBlogs %}
<li>
<a href="{{ path('l3_blog_view', {'id': blog.id}) }}">
{{ blog.getTruncatedTitle }}
</a>
</li>
{% endfor %}
实体:
class Blog
{
/**
* @var string
*
* @ORM\Column(name="content", type="text")
*/
private $content;
public function setTruncatedTitle($content)
{
$this->content = "Hey";
return $this;
}
/**
* Get content
*
* @return string
*/
public function getTruncatedTitle()
{
return $this->content;
}
}
最佳答案
查看您的代码,您用简单的字符串替换内容。但在模板文件中,您根本不调用该方法,而是直接访问 getter
。另外,X 个字符
是什么意思?如果你想截断你的标题并返回其中的一部分,Symfony 正在为此提供一个非常方便的过滤器。您所要做的就是注册该服务:
services:
twig.extension.text:
class: Twig_Extensions_Extension_Text
tags:
- { name: twig.extension }
之后就像{{ blog.content |截断(50)}}
。如果你想保留你的文字,请包含它的第二个参数,就像这样 |截断(50,真)
。如果您想要自定义分隔符,请将其作为 3rd
参数包含在内。
如果我没有正确理解您的问题,请告诉我。
- 更新 -
如果您想要的只是定义自定义方法来对您的属性执行一些特定的逻辑,那么可以这样做:
public function getTruncatedTitle() {
$title = $this->title; // or $this->content - whatever suits your needs.
// You can apply your custom logic here like that.
return substr($title, 0, 10);
}
然后调用 blog.truncatedTitle
将调用该方法。
关于php - Symfony2 : Add method to an Entity,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29858108/