Symfony Routing; Внутренние URI в пользовательском контенте - PullRequest
4 голосов
/ 24 ноября 2010

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

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

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

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

Ответы [ 2 ]

1 голос
/ 25 ноября 2010

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

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

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

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

0 голосов
/ 24 ноября 2010

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

...