Я хотел бы добавить метод к сущности.
Этот метод возвращает 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 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
вызовет этот метод.
Других решений пока нет …