Динамический URL Coldfusion - PullRequest
       11

Динамический URL Coldfusion

1 голос
/ 29 декабря 2011

Мне нужно создать динамический URL, основанный на двух полях, которые я получаю из своей базы данных.Первое поле - mainCategory, а второе - subCategory.

Строящийся URL-адрес выглядит примерно так: http://mydomain.com/cars/ford

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

Ответы [ 2 ]

0 голосов
/ 29 декабря 2011

Есть несколько способов сделать это. Вы можете использовать перезапись URL на веб-сервере, чтобы включить

http://mydomain.com/cars/ford

в

http://mydomain.com/index.cfm?mainCategory=cars&subCategory=ford

Но вы также можете сделать это в ColdFusion, если не возражаете против того, чтобы index.cfm находился в URL-адресе следующим образом:

http://mydomain.com/index.cfm/cars/ford

Если вы хотите сделать это в ColdFusion, текст после «index.cfm» помещается в переменную cgi с именем path_info, которую вы можете проанализировать следующим образом:

<cfset mainCategory = "" />
<cfset subCategory = "" />

<cfset pathInfoString = reReplaceNoCase( trim( cgi.path_info ), ".+\.cfm/? *", "" ) />
<cfset pathInfoArray = listToArray( pathInfoString, "/" ) />

<cfif arrayLen( pathInfoArray ) gte 1>
    <cfset mainCategory = pathInfoArray[ 1 ] />
</cfif>
<cfif arrayLen( pathInfoArray ) gte 2>
    <cfset subCategory = pathInfoArray[ 2 ] />
</cfif>

Вы можете использовать listGetAt () вместо преобразования его в массив, я просто предпочитаю выполнять операции над массивами над операциями со списками. Это reReplaceNoCase () сделано, потому что я думаю, что в некоторых случаях имя файла добавляется в начало информации о пути, но вам это может не понадобиться, если это не происходит для вас.

0 голосов
/ 29 декабря 2011

Слишком упрощенный ответ может выглядеть примерно так:

<cfquery name="getCats" datasource="dsn">
SELECT mainCategory, subCategory
FROM myTable
</cfquery>

<cfset newURL = "http://mydomain.com/cars/ford/mainCategory/#getCats.mainCategory#/subCategory/#getCats.subCategory#" />

В этом примере базовый CFQUERY с именем «getCats» используется для выбора двух столбцов из таблицы базы данных «myTable». Предполагая, что результаты есть, эти два значения вставляются в URL, который мы сохраняем в переменную с именем "newURL", чтобы использовать ее в другом месте вашего кода.

Этот пример действительно может использоваться только в качестве общего руководства; Есть много дополнительных предположений, не уточненных в вашем вопросе, которые необходимо будет учесть (т. е. имена баз данных, таблиц, уведомлений о доставке, как пользователь фактически переходит на этот URL-адрес и т. д.), не рассматриваемых в рамках этого ответа.

...