Как вы получаете переписанный URL-адрес CFWheels для данной страницы? - PullRequest
2 голосов
/ 07 декабря 2011

CFWheels имеет функцию URLFor () для получения внутреннего URL-адреса на основе предоставленных аргументов. Есть ли способ получить внутренний URL без указания аргументов?

Например: Если пользователь переходит к «http://somedomain.com" или» http://somedomain.com/about/" или «http://somedomain.com/contact/"», существует ли такой метод, как ReWrittenURL (), который возвращает что-то вроде «/» или «/ about /» или «/ contact /»?

Использование URLFor () без аргументов возвращает «/ home / index» или «/ about / index» или «/contact/index".

CGI.SCRIPT_NAME возвращает "/rewrite.cfm"

Очевидно, с помощью Javascript с использованием document.location.href я могу получить то, что мне нужно.

Ответы [ 2 ]

5 голосов
/ 07 декабря 2011

Имеет ли CGI.path_info значение, которое вы ищете?

edit

Сначала я удалил этот пост, будучи совершенно запутанным.Теперь я провел небольшой тест - я скачал последние файлы ядра колес (1.1.6), распаковал их на веб-сервер IIS 7.5 (с установленным модулем перезаписи URL) + CF9 и отредактировал файл «web.config» в ядре.root, установив «enabled = 'true'" для правила перезаписи.Кроме того, поскольку я запускал этот пример из подпапки, я изменил путь с "/rewrite.cfm" на просто "rewrite.cfm".Это привело меня к тому, что я смог успешно запрашивать URL-адреса следующим образом:

http://server/wheelstest/wheels/wheels

Отсюда я отредактировал layout.cfm под views / wheel, добавив:

<cfdump var="#cgi#">

Когда я запрашиваю вышеуказанный URL (/ wheeltest / wheel / wheel), я вижу дамп для области cgi.В path_info это значение: / wheel / wheel.

Затем я добавил пустой файл "index.cfm" в views / wheel.

Когда я запрашиваю / wheeltest / wheel, я получаю это для path_info: "/wheels".

Когда я запрашиваю / wheeltest / wheel /, я получаю это для path_info: "/wheels/".

Когда я запрашиваю / wheeltest / wheel / index, я получаю это для path_info:" / wheel/index".

Когда я запрашиваю / wheeltest / wheel / index /, я получаю это для path_info: "/wheels/index/".

Так что в основном - cgi.path_info делает дляя именно то, что вы описываете, вы хотите.Чем отличается ваша настройка от моей, так что она не возвращает это значение для вас?

3 голосов
/ 07 декабря 2011

возможно, есть лучший способ сделать это ... но я все равно пойду

каждой странице отправляется # params #

    <cfdump var="#params#">
    <cfoutput>#params.action#/#params.controller#/#params.key#</cfoutput>
    <cfabort>

попробуйте поместить это в контроллер и посмотрите результаты

проблема в том, что если объекты внутри объекта params не существуют, вы получаете ошибку. Таким образом, генерируемый путь должен проверить, существует ли ключ struct, и соответственно отредактировать.

...