2016-09-04 4 views
0

Я хотел бы иметь URL, как этот:Symfony: генерируя пробкового URL в моей статье URL вместо новостей ид

www.mysite.com/my-super-blog-post 

Вместо этого:

www.mysite.com/7 

Где «7» это свойство id моего объекта News.

Когда я вижу в документации Symfony я думаю, что нужно использовать эту строку кода:

$this->generateUrl('blog_show', array('slug' => 'my-blog-post'), UrlGeneratorInterface::ABSOLUTE_URL); 

правильно ли это? Я не понимаю, где мне нужно использовать эту строку кода? В моем файле NewsController.php?

Или, может быть, вы можете дать мне ссылку, чтобы прочитать о решении.

ответ

1

Редактировать Я использую Symfony 3.2

Ok Я нашел решение по моей собственной личности. Вот что я сделал.

Сначала прочитайте это из документа symfony. Использование ConvertParamater Это действительно легко осуществить http://symfony.com/doc/current/best_practices/controllers.html#using-the-paramconverter

После реализации она:

Установите StofDoctrineExtensionBundle

в composer.json

"требуют": { «Stof/Доктрина-extensions- bundle ":" ~ 1.1 " }

Не забывайте обновлять файл appKernel.php

<?php 
// app/AppKernel.php 

public function registerBundles() 
{ 
    return array(
    // … 
    new Stof\DoctrineExtensionsBundle\StofDoctrineExtensionsBundle(), 
    // … 
); 
} 

Затем настроить файл config.yml:

# app/config/config.yml 

# Stof\DoctrineExtensionsBundle configuration 
stof_doctrine_extensions: 
    orm: 
     default: 
      sluggable: true 

Затем я добавляю свойство пробкового к моим Новостям Entity:

private $slug; 

Затем я обновляю свой News.orm.yml файл пробковые: типа: строка длина: 255 уникально: ложные gedmo: пробковое: разделительные: _ стиль: верблюд поля: - название

Тогда я

doctrine:generate:entites myBundle:News 

А также `Доктрина схемы: обновление --force

Это создало поле пробкового в моем Новости.Поскольку это поле не может быть пустым, я вручную введен некоторое значение, так что каждый ряд моих новостей таблицы имеет действительный слизняк

Тогда в моей NewsController Я использую эту строку коды:

$this->generateUrl('myroute_news_show_one_by_id', array('slug' => $news->getSlug()), UrlGeneratorInterface::ABSOLUTE_URL); 

     return $this->render('MyBundle:News:single_post.html.twig', [ 
        'news' => $news, 
        'tags' => $arrTagNames 
     ]);` 

И в моем шаблон Twig Я создаю ссылку хотел показать одну новость:

<a href="{{ path('myroute_show_one_by_id', {'slug': news.slug}) }}">{{news.title}}</a> 

Я надеюсь, что это может помочь кому-то еще

 Смежные вопросы

  • Нет связанных вопросов^_^