2015-09-16 1 views
0

Моя структура каталогов:Coldfusion CreateObject из другой директории

  1. Com.Lib.db (Все дБ CFCs)

  2. Com.Lib.search (Все поисковые CFCs)

  3. Com .Lib.utils (Все utils cfcs)

Если я создаю нормальный объект каталога (db) fr om webroot directory.

Пример:

Createobject("component", "Com.Lib.db.mycfcA"); 

Если я в (БД) каталога создании объекта

Пример: CreateObject ("компонент", "mycfcA");

Это нормальный случай. В моем случае я хочу создать объект из каталога db в Utils OR Search. Когда я пытаюсь дать полный путь, например: Если я в каталоге db, пытаясь создать объект myUtils.cfc в каталоге (Utils).

Createobject("component", "Com.Lib.Utils. myUtils"); 
+1

Возможно, вам потребуется сопоставление. В вашем 'Application.cfc' что-то вроде

+0

Путь к компоненту 'Com.Lib ...' относится к корневому пути ('/') вашего приложения. Если физический путь не находится в том же каталоге, что и ваше приложение, вам нужно сопоставить. – Alex

+0

спасибо за быстрый ответ Я сделал, но все еще не работал –

ответ

3

Для иллюстрации относительного пути нахождение компонентов, вот пример:

Ваш веб-приложения, как:

/wwwroot/your-app/Application.cfc 
/wwwroot/your-app/index.cfm 
/wwwroot/your-app/images/example.jpg 

У вас есть виртуальный хост (www.your-app.com), что указывает на:

/wwwroot/your-app/ 

Это твой корень. ColdFusion будет решать / физически как /wwwroot/your-app/ (по умолчанию корневое сопоставление).

Вызов компонента, как:

createObject("component", "Com.Lib.Utils.myUtils") 

теперь будет проверять наличие файла, т.е. инициализировать компонент:

/wwwroot/your-app/Com/Lib/Utils/myUtils.cfc 

Если ХФУ нет в этой структуре, что вам нужно для определения пользовательского сопоставления для них. Пользовательские сопоставления определяются в конструкторе вашего Application.cfc. Итак, давайте предположим, ваш ХФ находится в следующем каталоге:

/wwwroot/my-cfcs/Com/Lib/Utils/ 

Теперь вы можете создать отображение для них, как:

<!--- Application.cfc ---> 
<cfcomponent> 

    <cfset THIS.mappings["utils"] = "/wwwroot/my-cfcs/Com/Lib/Utils/"> 

</cfcomponent> 

Для вызова компонентов, теперь вы можете обратиться к отображенному пути компоненты например:

createObject("component", "utils.myUtils") 

И это проверит наличие файла, т.е.Инициализация компонента:

/wwwroot/my-cfcs/Com/Lib/Utils/myUtils.cfc 
+0

Я не думаю, что вы можете лучше дать это подробное решение. Я не знаю, почему он не работает. im using [fedora - Lucee 4.5.1.022] Я понятия не имею, почему он не работает. Как вы думаете, это может быть из-за lucee или fedora ??? –

+0

Application.cfc Test.cfm

+0

Ohhhhh ... Работая сейчас, я обнаружил проблему, которую я определял отображение в« onstartapplication »... просто выглядящий код по строкам .... –