Маршрутизация Symfony; Внутренние URI в пользовательском контенте

Я работаю над проектом Symfony (1.4), который требует, чтобы пользователь мог вставлять внутренние URI в тело пользовательского контента, записывая в редакторе TinyMCE/WMD (еще не решил!) Пользователь может добавить внутренний URI в другое место на сайте. Контент будет храниться в базе данных как markdown/html.

Я мог бы просто вставить текущий URI, полученный через сам Symfony, но я надеялся, что есть способ сохранить соответствующие переменные модуля/действия/и т. д., чтобы, если маршрут необходимо изменить, URI оставались правильными на всем веб-сайте.

Единственное, что я могу придумать, это процессор, очень похожий на PHP Markdown, который выполняет текстовый поиск, извлекает пользовательскую разметку в блоке контента и заменяет ее кодом markdown/html для сгенерированного маршрута (используя Symfony get_url( )/link_to()). [Для этого также потребуется генератор текстовой разметки и т. д.]

Есть ли у Symfony другой/лучший способ, чем этот? Могу ли я получить доступ к помощникам Symfony/и т. д. из пользовательского ввода?


person Ghostpsalm    schedule 24.11.2010    source источник


Ответы (2)


Нет простого способа сделать это. Вероятно, лучший способ:

  • Проанализируйте ввод редактора при отправке, чтобы найти все URL-адреса.
  • Замените URL-адреса пользовательским синтаксисом, в котором хранятся имя и параметры маршрута.
  • Всякий раз, когда вы извлекаете/отображаете информацию, удаляйте свой собственный синтаксис и заменяйте его сгенерированным маршрутом (например, с помощью обратного вызова preg_replace).

В качестве альтернативы для небольших сайтов с относительно негибкими маршрутами можно отобразить раскрывающийся список доступных маршрутов.

Любой маршрут, вероятно, будет связан с некоторыми головными болями.

person Jeremy Kauffman    schedule 25.11.2010
comment
Да, я так и думал. Спасибо за ваши предложения. Если кто-то скоро не придумает какое-нибудь волшебство, так оно и будет! - person Ghostpsalm; 25.11.2010

просто скажите пользователям, что им нужно использовать именованные маршруты @my_custom_url и определите их в файле маршрутизации symfony routing.yml

person sbczk    schedule 24.11.2010
comment
Разве маршрут имен по-прежнему не должен обрабатываться методом Symfony? Я не думаю, что следующее не сработает; ‹a href=/@default?module=job&action=show&id=1›Задание 1‹/a› - person Ghostpsalm; 25.11.2010
comment
да, я почему-то думал, что вы их разбираете, и вы просто не хотите, чтобы пользователи вводили модуль/действие - person sbczk; 25.11.2010