Utilisation du périmètre de la requêteVariables à l'intérieur des balises personnalisées existent dans leur espace propre variable, et la seule façon de partager les données et-vient entre la page d'appel et la balise personnalisée est en utilisant les attributs et les étendues de l'appelant. Variables de requêtes sont disponibles pour tous les modèles dans une demande, y compris balises personnalisées, et sont le meilleur moyen de donner des balises personnalisées accès à des variables globales telles que Request.MainDSN, Request.Username, et Request.Password. Vous devez généralement limiter votre utilisation de Demande-scope variables dans vos balises personnalisées à des constantes globaux tels ceux-ci. Toutes les autres données nécessaires à une balise personnalisée doit être passées par les attributs. Comme les fonctions peuvent, les balises personnalisées peuvent être appelés de façon récursive. Cela est rare, cependant, et habituellement à une échelle avancée, parce que la récursivité dans les balises personnalisées sont utilisées autrement que dans les fonctions définies par l'utilisateur. Parce que les UDF sont plus adaptés à faire des calculs, vous trouvez plus récursivité numérique dans les fonctions UDF. D'autre part, la récursivité dans les balises personnalisées est le mieux adapté pour les interventions comme une récursion sur les structures ou les hiérarchies de répertoire, dont l'objectif est la sortie de page plutôt que de renvoyer des résultats unique à partir de chaque appel récursif. Le code montre une balise personnalisée qui prend un chemin de répertoire et retourne une liste de tous les fichiers et les sous-dossiers de ce sillon. Il utilise la récursivité pour lister le contenu des sous-répertoires ainsi.
Le test CFIF pour "GetFiles.Name NEQ". "ET GetFiles.Name NEQ ".."" n'est pas nécessaire dans ColdFusion MX, parce que MX ne retourne plus de ces valeurs. Nous avons gardé le test sur cette liste pour la compatibilité descendante avec ColdFusion 5. ListDir.cfm utilise CFDIRECTORY d'obtenir tous les fichiers et les sous-dossiers du répertoire passé à la balise. Elle a ensuite boucle sur la liste des fichiers et des répertoires et des sorties tous les fichiers qu'il trouve. Chaque fois que la boucle rencontre un répertoire, ListDir.cfm lui-même appelle de manière récursive, en passant le nom du nouveau répertoire. Nous avons appelé ListDir.cfm sur nos systèmes en utilisant les éléments suivants: CFABORT est mentionné comme un moyen d'arrêter immédiatement l'exécution d'une demande de. L'intérieur d'une balise personnalisée, vous souhaitez que rarement de mettre fin à une demande d'ensemble, mais vous mai souhaitez mettre fin à l'exécution de la balise et revenir à la page d'appel. Un appel à CFEXIT se présente comme suit: Vous avez trois valeurs possibles de la méthode: ExitTag: l'exécution reprend après la balise de clôture. ExitTemplate: l'exécution reprend après l 'ouverture ou la balise de fermeture, selon l'endroit où elle est appelée. Loop: Ré-exécute le corps de la balise personnalisée. ExitTag arrête le tag en cours, ce qui signifie que l'exécution se poursuit après la balise de fermeture (ou la balise d'ouverture, si vous n'avez pas de balise de fermeture). Les codes indiquent une balise personnalisée et sa page d'appel.
Running MyTagCall.cfm produit les estimations suivantes: C'est le contenu de la balise d'ouverture. C'est le contenu après la balise de clôture. Calling CFEXIT saute immédiatement tag le passé de clôture, de sorte ColdFusion saute tous la puissance supplémentaire dans la balise et en appelant page. ExitTemplate est similaire à ExitTag, en fait, c'est différent que si vous l'appeler dans le mode de démarrage. Au lieu de sortir de la balise, ExitTag saute-delà de la fin du modèle actuel, autrement dit, appelant ExitTemplate dans le mode de démarrage commence immédiatement à exécution le corps de la marque. D'autre part, ExitTemplate appelant en mode de fin se termine immédiatement la balise personnalisée.
Appelant le code indique maintenant le résultat suivant: C'est le contenu de la balise d'ouverture. Ceci est le contenu du tag. C'est le contenu de la balise de clôture. Ceci est le contenu après la balise de clôture. ExitTemplate saute la fin du mode de démarrage, mais continue d'exécution au début du corps. Boucle est très différente de ExitTag et ExitTemplate parce Loop exécute le code qui est déjà exécuté. Plutôt que de sauter une partie antérieure de la balise, boucle ré-exécute le corps de la balise personnalisée. Comme telle, elle peut être appelée uniquement en mode fin de la balise personnalisée. Loop est utilisé beaucoup moins souvent que ExitTag ou ExitTemplate et est presque exclusivement utilisé avec des balises imbriquées. Les modifications apportées à ces deux balises, nécessiter un changement dans l'architecture de la balise. Dans les codes, OutputTable.cfm fait le gros du travail, et OutputColumn.cfm venez de définir les colonnes à sélectionner dans la base de données et la production de la ligne de titre pour cette inscription. Les modifications que vous allez faire dans les listes suivantes font de OutputTable.cfm obtenir les données de la base, mais le travail de sortie des données incombe essentiellement sur OutputColumn.cfm, qui est une meilleure division du travail. Les codes de montrer la des modifications à OutputTable.cfm et OutputColumn.cfm.
Remarquez que ces listes sont en utilisant des variables de requête? Vous utilisez des variables de requête de communiquer dans les deux sens entre le mode Fin de la balise parent, et les balises filles imbriqués, qui est une autre utilisation acceptable d'entre eux. Vous pouvez aussi le faire en utilisant CFASSOCIATE et GetBaseTagData (), mais cela serait plus compliqué. un article présenté par Greg Hunter Disclaimer:Notre site n'est pas responsable du contenu de cet article. Webarticles est une ressource d'information gratuite. Important: Cet article «Utilisation du périmètre de la requête" a été traduit par un logiciel automatique. Nous nous sentons désolés pour les fautes d'orthographe que mai ont eu lieu. Nous vous remercions de votre compréhension.
|
|||||||
| Online: 263 users browsing the articles directory |
|
|