0
votes

Comment appeler une fonction de coldfusion d'un fichier .CFC?

J'ai un fichier .CFC avec toutes mes fonctions de celui-ci (enveloppé dans un tag), y compris celui-ci: xxx

et dans mon fichier .cfm, j'ai mis: xxx

Il n'affiche pas le pied de page.

Quand j'ai tout cela dans un seul fichier .cfm, il Fonctionne bien.

Je dois pouvoir stocker la fonction dans mon fichier .CFC et l'appeler de n'importe où dans l'application.

Qu'est-ce que je manque? < / p>


5 commentaires

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. . 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 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. ") /> 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. ") /> 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. " .


6 Réponses :


0
votes

Je vais demander et répondre à ce que je pense que vous voulez.

question

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.

Comment puis-je faire ça? Oh, et j'ai besoin de le faire avec des balises, pas un script

réponse

Tout d'abord, nous avons besoin d'une fonction très large. Je vais le mettre dans Application.cfc . Il est vrai que application.cfc est un .cfc , mais il est très spécial. xxx

maintenant à l'intérieur de Chacun des fichiers .cfm , vous pouvez xxx


2 commentaires

Êtes-vous sûr d'avoir toutes les parenthèses nécessaires?


La ligne est mal placé. Il devrait être dans OnApplicationStart plutôt que dans le pseudoconstructeur. Néanmoins, votre idée - d'utiliser le fait qu'une fonction est juste une autre variable - est soignée.



1
votes

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>


2 commentaires

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.



1
votes

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()>


0 commentaires

0
votes

s'avère que c'était beaucoup plus simple que la plupart des États-Unis l'ont fait sortir. La balise code> n'était pas nécessaire. Stocker le HTML dans une variable n'était pas nécessaire. Je ne sais pas si c'était moi ou non, mais cela a eu lieu sur compliqué.

En fin de compte, c'est là que j'ai fini par faire. P>

Lib.CFC Fichier strong> P>

<cfoutput>
    #application.lib.getFooter()#
</cfoutput>


2 commentaires

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 . 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 .


Vous avez raison @danbracuk, et j'ai édité ma réponse ci-dessus. Dans mon application.cfc, j'ai .



1
votes

Encore une autre façon de le couper:

Application.cfc xxx

lib.cfc xxx

alors puis , dans n'importe quel fichier CFM dans l'application: xxx


0 commentaires

0
votes

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 xxx

index.html xxx


2 commentaires

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