Использование <cfinclude>с this.mapping - PullRequest
0 голосов
/ 13 марта 2012

В моем приложении есть верхний и нижний колонтитулы. В моем Application.cfc я настроил функцию, которая называет мое приложение и устанавливает отображение.

<cfcomponent output="no">
<cfset this.name = "thesitename">
<cfset this.datasource = "thesitedatasource">
<cfset this.rootDir = getDirectoryFromPath(getCurrentTemplatePath()) />
<cfset this.mappings = structNew()>
<cfset this.mappings["/planning"] =  "#this.rootDir#planning/" />
<cfset this.mappings["/images"] = "#this.rootDir#images/" />
<cfset this.mappings["/includes"] = "#this.rootDir#includes/" />
<cfset this.mappings["/js"] = "#this.rootDir#js/" />
<cfset this.mappings["/portfolio"] = "#this.rootDir#portfolio/" />
</cfcomponent>

Если у меня есть страница в подкаталоге, подобная этой: planning/index.cfm <cfinclude> не может найти ничего в папке изображений, когда я использую следующий путь: <li class="imagelink"><img src="/images/facebook.png"></li>

Страницы в корневом каталоге не имеют проблем.

Если я правильно понимаю, проблема связана с тем, что сопоставление не происходит до того, как вызывается включение, или что-то в этом роде ... Как мне заставить правильно отображенные пути работать в моем включении?

1 Ответ

7 голосов
/ 13 марта 2012

Отображения ColdFusion полностью отделены от псевдонима или виртуального каталога веб-сервера.Чтобы ваш код работал, вам нужно добавить сопоставление веб-сервера, «псевдоним» в Apache или «виртуальный каталог» в IIS с именем «images», указывающее на каталог, в котором вы храните изображения.

Отображение ColdFusion 'images' будет работать только в ColdFusion - например, при создании объекта вы можете использовать createObject ("component", "images.image") (при условии, конечно, что у вас есть CFC с именем Image в этомдиектория.

...