J'ai un fichier .CFC avec toutes mes fonctions de celui-ci (enveloppé dans un et dans mon fichier .cfm, j'ai mis: p> Il n'affiche pas le pied de page. p> Quand j'ai tout cela dans un seul fichier .cfm, il Fonctionne bien. p> Je dois pouvoir stocker la fonction dans mon fichier .CFC et l'appeler de n'importe où dans l'application. P> Qu'est-ce que je manque? P> < / p>
6 Réponses :
Je vais demander et répondre à ce que je pense que vous voulez.
question strong> p> J'ai une application et il doit avoir des pieds de page communs. Mes pieds de page auront besoin de la capacité d'avoir une sorte de logique commerciale. En ce moment, il ne s'agit que de texte statique. Je pense que mes pieds doivent être une fonction. P> Comment puis-je faire ça? Oh, et j'ai besoin de le faire avec des balises, pas un script p> réponse strong> p> Tout d'abord, nous avons besoin d'une fonction très large. Je vais le mettre dans maintenant à l'intérieur de Chacun des fichiers Application.cfc Code>. Il est vrai que
application.cfc code> est un
.cfc code>, mais il est très spécial. P>
.cfm code>, vous pouvez p>
Êtes-vous sûr d'avoir toutes les parenthèses nécessaires?
La ligne
Vous expliquez clairement votre exigence:
Je dois être capable de ... appelez-le de n'importe où dans l'application. P> blockquote>
Alors, ne faites pas cela: p>
"Avoir un fichier .CFC avec toutes mes fonctions dedans (enveloppé dans un tag), y compris celui-ci: " p> blockQuote>
l'exigence "Appelez-le de n'importe où dans l'application", implique une seule chose dans ColdFusion: une variable scopée d'application. P>
Alors, procédez comme suit: transférer le pied de page Fonctionnalité de ce CFC à votre application.cfc. p>
Supposons que ce qui suit est un extrait de votre application.cfc. p>
alors, faites quelque chose comme: p>
<cfoutput>#application.footer#</cfoutput>
J'apprécie cela, mais nous stockons toutes nos fonctions dans un fichier lib.cfc. Ce n'est plus scopé à la portée de la demande, de sorte que cela ne fonctionne pas. Je pensais que cela pourrait être appliqué localement, mais cela ne fonctionne pas non plus. Je sais qu'il y a un concept fondamental que je ne comprends pas ici, mais je ne suis pas sûr de ce que c'est.
Oui, @jarednewman, pour emprunter vos propres mots, il y a des concepts fondamentaux que vous ne comprenez pas ici. Les concepts ont en fait été mentionné. (1) L'exigence: "Appliquez-la de n'importe où dans la demande", implique une seule chose dans ColdFusion: une variable applicable. [Non "localement"]] Alors, procédez comme suit: transfert la fonctionnalité de pied de page de ce CFC à votre application.cfc. (2) Sinon, vous pouvez choisir d'instancier le CFC LIB dans ONAPPLICATIONSART. C'est bien aussi. J'ai maintenant ajouté cette réponse alternative.
Vous avez déclaré, Nous stockons toutes nos fonctions dans un fichier lib.cfc. code>. Donc, dans ce fichier, écrivez votre fonction.
<cfset FooterObject.writeAppABCFooter()>
s'avère que c'était beaucoup plus simple que la plupart des États-Unis l'ont fait sortir. La balise En fin de compte, c'est là que j'ai fini par faire. P> Lib.CFC Fichier strong> P>
<cfoutput>
#application.lib.getFooter()#
</cfoutput>
C'est bien que vous avez résolu votre problème. Cependant, étant donné que cette question est maintenant une référence pour d'autres personnes susceptibles de faire face à des problèmes similaires, je vais contester la déclaration, ni créer un nouvel objet code>. Un objet est en fait nécessaire pour accéder aux fonctions d'un composant. Vous n'avez pas besoin d'un nouveau parce que vous en avez déjà eu un. Si vous cochez votre fichier Application.cfc, vous trouverez probablement le code de créer la variable d'application,
application.lib code>.
Vous avez raison @danbracuk, et j'ai édité ma réponse ci-dessus. Dans mon application.cfc, j'ai
Encore une autre façon de le couper:
Application.cfc P> lib.cfc p> alors puis , dans n'importe quel fichier CFM dans l'application: p>
Je trouve utile de simplement mettre de simples choses réutilisables dans leur propre CFM et simplement les inclure en cas de besoin.
/app/includes/footer.cfm p> index.html p>
Mais inclut peut devenir surbout et faire du mal à la logique de la page.
Hockey Heckey - Pas de préjudice s'il est utilisé correctement - à partir de la documentation: Utilisations recommandées Envisagez d'utiliser la balise CFCLUMLUER dans les cas suivants: Pour les en-têtes de page et les pieds de page pour diviser une grande page en plusieurs morceaux logiques plus faciles à comprendre et à gérer pour les grands "extraits "du code utilisé dans de nombreux endroits mais ne nécessite pas de paramètres ni d'adapter le modèle d'une fonction ou d'une balise
Pour votre problème immédiat, reportez-vous à la réponse de BKBK à votre question précédente. En outre, dans votre question précédente, vous avez indiqué que vous êtes nouveau à Coldfusion. Cela ressort de votre question parce que vous faites quelques choses fondamentalement fausses. Je suggère d'apprendre les principes fondamentaux des composants de ColdFusion afin que vos tentatives de les utiliser vont mieux que celle-ci n'a jusqu'à présent.
@Danbraceuk - J'étais un peu jeté de ne pas réaliser la courbe d'apprentissage. Je suis un développeur front-end par commerces et, malheureusement, je dois apprendre comme je vais. Dans la situation ci-dessus, vous iriez avec la solution de BKBK, mais cette solution n'est pas ce qui est invité à faire. Je suis invité à écrire la fonction dans un fichier .CFC et appelez-le de n'importe où dans l'application. Où suis-je mal avec ce que vous voyez ci-dessus?
@DANBRACUK doit être très honnête, j'ai du mal à trouver quoi que ce soit sur "appeler une fonction d'un fichier CFC n'importe où dans une application". Sinon, je suis sûr que j'aurais les réponses que je cherche.
La réponse de BKBK à votre autre question satisfait à votre exigence indiquée de
Écrivez la fonction dans un fichier .CFC et appelez-le de n'importe où dans l'application. Code>. Votre objection était: «Écrire la fonction est sur la chose, mais si je vais écrire tout ce que vous avez dans TestPage.cfm dans chaque dossier où je veux mettre le pied de page, je pourrais aussi bien mettre le pied de page actuel. '. Par la suite, il a commenté la balise code> donc il y a une ligne inférieure. En ce qui concerne la quantité de code pour appeler la fonction, c'est ainsi que cela fonctionne. Vous devez d'abord créer un objet.
@Jarednewman, votre code contient des erreurs. (1) la ligne
cfset footer = getfooter (Footer = " Je suis un pied de page. Footer>") /> code> est dans le pseudoconstructeur (espace entre fonctions dans un CFC). Cela ne devrait pas être là, à moins que vous ne souhaitiez la définir comme une propriété du CFC. Même dans ce cas, seul le CFC aura accès à celui-ci. (2) la ligne
cfset footer = getfooter (Footer = " Je suis un pied de page. Footer>") /> code> suit la déclaration de retour, et ainsi est redondant. (3) Vous n'avez pas échappé aux citations de la chaîne
" Je suis un pied de page. Pied>" code>.