Question

Les balises personnalisées fonctionnent-elles avec des mappages? J'essaie de ne pas avoir à traiter le dossier CustomTags comme une adresse relative.

j'ai essayé:

<cfset this.mappings["/CT"] = Expandpath("/myProjects/Project1/CustomTags")>

dans Application.cfc puis

<cfimport prefix="tag" taglib="/CT">

à l'intérieur de ma page, mais ce n'est pas le cas.

Il est écrit:

Impossible d'importer la bibliothèque de balises spécifiée par / CT. L'erreur suivante s'est produite: C: \ Inetpub \ wwwroot \ CT. Assurez-vous d'avoir spécifié une bibliothèque de balises valide.

Était-ce utile?

La solution

La documentation indique qu'elle fonctionne avec un répertoire spécifié dans la page Mappages de l'administrateur ColdFusion. Avez-vous essayé de définir le mappage dans l'administrateur ColdFusion pour voir si cela fonctionne en premier? Si cela fonctionne, mais que le set this.mappings défini par application dans le fichier application.cfc ne fonctionne pas, alors il s’agit peut-être d’un bogue?!?

MODIFIER: J'ai testé la suggestion d'Adam d'utiliser la fonction expandPath (), mais cela ne fonctionne pas non plus, car l'attribut taglib doit contenir une valeur constante. Il ne peut pas contenir de variable ou de fonction. Cela ne fonctionne tout simplement que si vous utilisez un mappage défini dans l'administrateur ColdFusion. J'ai essayé les tests suivants en utilisant ce fichier application.cfc.

<cfcomponent>

    <cfset this.name = "TestApp" />
    <cfset this.loginStorage = "session" />
    <cfset this.sessionManagement = true />
    <cfset this.setClientCookies = true />
    <cfset this.setDomainCookies = false />
    <cfset this.sessionTimeOut = CreateTimeSpan(0,12,0,0) />
    <cfset this.applicationTimeOut = CreateTimeSpan(1,0,0,0) />
    <cfset this.mappings['/CT'] = "C:\apache\htdocs\myProjects\Project1\CustomTags"/>

</cfcomponent>

Et ceci dans un modèle ColdFusion:

<cfimport prefix="tag" taglib="#expandpath('/CT')#">

Lance l'erreur:

  

Cette expression doit avoir une constante   valeur.

<cfset CT = expandpath('/CT')/>
<cfimport prefix="tag" taglib="#CT#">

Lance l'erreur:

  

Cette expression doit avoir une constante   valeur.

Autres conseils

Contrairement à ce que Jayson a signalé - CFIMPORT fonctionne parfaitement avec un mappage par application par rapport à un système défini globalement dans CFAdmin. CFIMPORT est plutôt grincheux en matière de mappages (par exemple, vous ne pouvez pas utiliser de variable pour relativepath, ni utiliser expandpath), mais vous devriez pouvoir faire ce que vous ne voulez pas, mais

.

Avez-vous " Activer les paramètres par application " vérifié dans CFAdmin | Paramètres pour vous permettre d'utiliser this.mappings? Quelle version de CF utilisez-vous? J'utilise CF8 avec ce code et je n'ai aucun problème:

Application CFC (en dehors d'une fonction mais avec un composant in):

this.rootPath = getDirectoryFromPath(getCurrentTemplatePath());  // this assures path of application.cfc is used to determine path, likely equivalent to expandPath("/")
structInsert(this.mappings, '/vp', this.rootPath);

En CFC (hors fonction mais avec composant):

<cfimport prefix="loader" taglib="/vp/view/_loader/">

Je peux ensuite utiliser le CFC et cela fonctionne comme prévu.

Je suis presque sûr que vous ne pouvez rien faire de spécial avec la balise cfimport. Je pense que vous devez utiliser des chemins relatifs et l'inclure manuellement sur chaque page. (vs le mettre dans le fichier application.cfc quelque part ou autre)

Je suis presque sûr que expandPath respecte les mappages CF. Avez-vous essayé quelque chose comme ça?

<cfset this.mappings["/CT"] = Expandpath("/myProjects/Project1/CustomTags")>

<cfimport prefix="tag" taglib="#expandPath('/CT')#">

Je l'ai confirmé ... vous ne pouvez pas utiliser les mappages créés via le "& this; mappings" " structure dans le fichier application.cfc.

Extrait de la documentation d'Adobe (Coldfusion 9):

  

Le chemin doit être relatif au Web.   root (et commence par /), le courant   emplacement de la page ou un répertoire   spécifié dans l'administrateur   Page Mappages ColdFusion.

Documentation CFImport pour CF 9

Vous ne savez pas pourquoi les mappages application.cfc fonctionnent pour à peu près tout le reste, sauf ceci. Un peu décevant, car j’ai aimé l’idée de définir le moins possible dans l’Administrateur. J'aime simplement compresser une application et la déployer n’importe où.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top