У меня есть сущность Article , и фактически я использую функцию path () в 3 шаблонах веток, предоставляя в качестве второго параметра slug статьи, чтобы получить отображаемый URLодна статья.
Я знаю, что это не лучший способ сделать это, потому что, например, если я хочу предоставить идентификатор вместо слага, я должен изменить код в более чем одном шаблоне.
Я думал использовать метод getUrl () в классе Article, но я не могу использовать службу Route для генерации URL.
Есть ли лучший способ сделать это?что в Symfony 4?
Это часть ArticleController :
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Routing\Annotation\Route;
use App\Entity\Article;
use App\Repository\ArticleRepository;
class ArticleController extends AbstractController
{
...
/**
* @Route("/article/{slug}", name="article_show")
*/
public function show(Article $article) {
return $this->render('article/show.html.twig', [
'article' => $article
]);
}
}
Тогда в шаблонах у меня есть подобный код, подобный этому:
{% for article in articles %}
...
<a href="{{ path('article_show',{ 'slug': article.slug } ) }}">
{{ article.title }}
</a>
...
{% endfor %}
Я хотел бы иметь такой код:
{% for article in articles %}
...
<a href="{{ article.getUrl() }}">
{{ article.title }}
</a>
...
{% endfor %}
, где getUrl выполняет работу метода path (), поэтому, если я что-то изменю в маршруте,будет отражено во всех шаблонах, но я не могу сделать это, потому что я не могу получить маршрутОшибка в объекте Article.
Так есть ли альтернативный способ достижения той же цели?