Symfony2: добавление метода в сущность

Я хотел бы добавить метод к сущности.
Этот метод возвращает 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;
}

}

2

Решение

Глядя на ваш код, вы заменяете свой контент простой строкой. Но в вашем файле шаблона вы вообще не вызываете этот метод, вы получаете прямой доступ к вашему getter, И что делает X characters средства? Если вы хотите обрезать свой заголовок и вернуть его часть, 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 вызовет этот метод.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector