@maches
Начинающий разработчик-лентяй.

SEF URL's in Symfony2. Как из базы тащить по id, а выводить ЧПУ?

Доброго времени суток, друзья. В процессе разработки под заказ (фриланса) проекта на sf2 возникла необходимость как следует разобраться с реализацией красивых URLов как для человека, так и для поисковых машин.
Суть заключается в следующем. По ТЗ заказчика URLы должны выглядеть следующим образом:
audio-mastering-online.com/all-online-mastering-st... - главная страница
audio-mastering-online.com/all-online-mastering-st... - где namePage раздел сайта, в котором можно выбрать критерий поиска всех компаний, существующих на сайте. Будь то поиск по стране в разделе countries, или поиск по выбранным параметрам в разделе parameters.
На данный момент поиск всех компаний по стране осуществляется по имени страны.
http://audio-mastering-online.com/all-online-maste...
Это, конечно, не хорошо. Искать по базе лучше всего по id.
С параметрами дела обстоят немного сложнее.
company-name.com/all-company-name-list/parameters (вырезка из ТЗ)
Собственно, вопрос: Каким образом организовать роутинг в sf2, чтобы получать из базы всё по id, при этом отображая SEF URL.
P. S. Я с sf2 на Вы. Вид урлов не железный, могу обсудить с заказчиком любые варианты и убедить его сделать так, как надо.
  • Вопрос задан
  • 2495 просмотров
Решения вопроса 1
@maches Автор вопроса
Начинающий разработчик-лентяй.
Действительно, надобность в этом отпала. Пошевелил извилинами и нашел решение своей проблемы другим путем. А вообще можно slug на regexp сделать (нашел живой пример на stack overflow). Возможно кому-то поможет.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
RussellKvashnin
@RussellKvashnin
WEB-developer
Никак. Да и нет в этом никакой надобности.
В сущности страницы добавляется поле - дополнительный уникальный идентификатор (slug зовется буржуями).
В запросе приходит именно этот параметр, и именно по нему вы и ищите в базе.
Вполне себе годное решение.
Ответ написан
qant
@qant
programer
Вопрос конечно ж сильный ))) Руслан все верно ответил, но если пилите уже чье то либо нет желания переписывать часть коде где уже используеться id то:

На вскидку чтото вроде завести спец поле куда транслитировать заголовок страницы в чпу ()

к примеру из базы вытянули такое (в идеале собрались вставить в базу)

id=567
title=Я пост супер тема
discr=Этот посто про супер тему
body=Тут вся хрень хтмл и картинки и тп и тд

Ну и берете title гуглите функцию что то аля CyrToLat + замена пробелов на "_" и впуть добавляете в базу либо подменяете через .htaccess по 301

вобщем что бы в результате было что то
....
$chpu_title = CyrToLat ($result->title);
$db->add_field_to_table($table, $chpu_title)->where(id=$result->id);
....
что бы появилось поле в базе
chpu_title=ya_post_super_tema

А далее как хотите, если у вас по id определяет то подставляете chpu_title либо уже так и формируете ссылки взяв chpu_title вместо id.

Вообще как то странно... такой вопрос, про такой фреймворк вызывает дисонанс.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы