Php Symfony2:将方法添加到实体

Php Symfony2:将方法添加到实体,php,symfony,entity,add,Php,Symfony,Entity,Add,我想向实体添加一个方法。 这个方法从实体的标题返回X个字符,我想在我的细枝文件中打印这个标题。 可能吗 小枝: <ul class="nav nav-pills nav-stacked"> {% for blog in listBlogs %} <li> <a href="{{ path('l3_blog_view', {'id': blog.id}) }}"> {{ blog.getTruncatedTitle

我想向实体添加一个方法。 这个方法从实体的标题返回X个字符,我想在我的细枝文件中打印这个标题。 可能吗

小枝

<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 | truncate(50)}}
一样简单。如果您想保留您的文字,请包括它的第二个参数,如下面的
| truncate(50,true)
。如果需要自定义分隔符,请将其作为
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将调用该方法。

最好不要让自己“它不起作用”。您能否至少包含一些您迄今为止尝试过的代码,以便人们能够真正帮助您?事实上,我想从我的twig模板中调用实体的一个方法。@Léo Martin,我添加了更多信息。