Использование только фрагментов Application.cfc?

У меня нет никакого формального образования в области Coldfusion, поэтому подобные вещи меня действительно смущают, потому что они не работают так, как я предполагал.

Моя структура папок такова:

MainAppFolder
  |
  |_ApplicationFolder
    |
    |_SubAppFolder1
       |_Application.cfc
    |
    |_SubAppFolder2
       |_Application.cfc
    |
    |_Application.cfc

Последний файл Application.cfc, содержащийся в основном файле ApplicationFolder, — это файл Application.cfc, который я хочу содержать в своем файле <cflogin>. Это работает и работает отлично. Однако проблема возникает, когда я реализую подпрограмму Application.cfc в файле SubAppFolderx. Эти файлы Application.cfc должны содержать только событие onRequestStart.

<cffunction name="onRequestStart">
    <cfset Application.AppID = 4>
    <cfinvoke component="loc" 
              method="getAppName" 
              returnvariable="appName" />
     <cfset Application.AppName = appName>
</cffunction>

Чем больше я пытаюсь решить эту проблему, тем глубже я закапываю себя в яму. Я попытался вернуться и узнать больше о том, как манипулировать Application.cfc, но информации о Coldfusion не так много, что касается руководств. Хотя документация для него великолепна, но она не помогает мне понять, что мне нужно делать в подобных ситуациях.

Итак, что мне нужно сделать, чтобы выполнить то, что у меня есть в onRequestStart в SubAppFolderx? Я уверен, что это простой ответ, но, как я уже сказал, я просто копаю себя в яму здесь.


person mawburn    schedule 11.09.2012    source источник
comment
Что вам нужно сделать, так это расширить application.cfc в корневом каталоге, но вы не можете сделать это, указав Extends=Application, как для других cfc. Бен Надель (конечно же) написал отличный пост в блоге, в котором рассказывается, как это сделать: Component-With-A-Relative-Path-Proxy.htm" rel="nofollow noreferrer">bennadel.com/blog/   -  person Busches    schedule 11.09.2012
comment
Вы должны изучить использование фреймворка, чтобы помочь со структурированием вещей. FW/1, в частности, имеет понятие подсистем, которые могут хорошо подходить для того, что вам нужно. повторно пытаюсь сделать.   -  person Peter Boughton    schedule 11.09.2012


Ответы (2)


Хотя с cfinclude все в порядке, он может не предлагать ту функциональность, которая вам нужна (наследование). Поскольку Application.cfc сам по себе является компонентом, вы можете перегрузить/переопределить методы, как и с любым другим CFC.

Я не буду вдаваться в код, потому что легенда, известная как Бен Надель, уже опубликовал идеальный блог для этого вопроса:

http://www.bennadel.com/blog/1179-Ask-Ben-Extending-Application-cfc-And-OnRequestStart-With-SUPER.htm

person AlexP    schedule 18.09.2012

Вы можете поместить свой логин в оператор cfinclude и иметь Application.cfc внутри SubAppFolder1.

  1. Включите код, общий для всех файлов Application.cfc.
  2. Содержит код, настраиваемый для SubAppFolder1
person Phillip Senn    schedule 12.09.2012