2009-06-07 5 views

Répondre

6

Personnellement, je ne voudrais pas que ColdFusion inclue ces balises, car je ne produis pas toujours du code HTML. En outre, contrairement à PHP, il n'y a pas de balise <?coldfusion>, ou quelque chose de similaire que vous utilisez pour déclarer que CF devrait traiter votre code. Toutes les balises ColdFusion sont préfixées avec 'cf' et peuvent être intercalées avec du code HTML normal. Gardez à l'esprit que pour afficher la sortie sur la page, vous devez utiliser la balise '<cfoutput>'. c'est à dire.

<cfset variables.firstName = 'My Name' /> 
<html> 
<head> 
    <title>ColdFusion Sample</title> 
</head> 
<body> 
Hello <cfoutput>#variables.firstName#</cfoutput> 
</body> 
</html> 
+0

Je note également que cfoutput évalue et produit les expressions ColdFusion et n'est pas nécessaire autour du HTML générique par défaut (il existe des instances spécifiques où il serait également nécessaire pour le HTML mais vous devez spécifiquement activer ce mode de traitement). –

1

Incluez-le dans votre source. Même s'il les a ajoutés automatiquement (ce qui n'est pas le cas), vous avez presque toujours besoin de plus de contrôle (c'est-à-dire de configurer vos balises META).

BTW, vous n'avez même pas besoin de ces balises. L'extrait suivant devrait s'afficher correctement dans la plupart des navigateurs.

<div> HI </div> 
+0

Désolé de poser une telle question, mais je suis assez confus avec la quantité ahurissante de tags que CF supporte, mais CF est comme PHP où vous pouvez simplement écrire votre code HTML en dehors de l'ouverture comme "

+1

Il n'est pas nécessaire de vider CF, sauf si vous essayez d'améliorer les performances de certaines pages (par exemple, en vidant les en-têtes de manière à ce que les documents extralals commencent à se charger plus rapidement). – SpliFF

+0

@jeremy: pour répondre à votre question, oui, c'est comme PHP à cet égard. Les étiquettes CF sont traitées en dehors du code HTML avant d'être envoyées au navigateur. –

2

manière plus simple que je peux penser à explaing est:

code CFML récupère, calcule et affiche des informations dans un document HTML.

Donc, si vous utilisez un cadre de toute nature, l'en-tête fichier inclus sur chaque page contiendrait le ..

<HTML> <head></head><body> 

et la page de bas de page comprendrait les ..

</body> </HTML> 

Bien sûr, comme pour n'importe quoi, si pour une raison quelconque vous le vouliez, vous pourriez programmer quelque chose pour les afficher aussi bien pour vous. J'ai trouvé que CFML était la syntaxe la plus simple pour rester lisible en HTML, et ce n'est pas grave de le laisser de cette façon.

Espérons que ça aide.

1

Vous pouvez créer une étiquette personnalisée pour le faire pour vous.

Par exemple, dans chaque page que vous vouliez que votre modèle standard, vous pouvez utiliser quelque chose comme:

<cf_page 
    title = "MyTitle" 
    styles = "base.css,form.css,theme.css" 
    > 

    Main Page Content 

</cf_page> 


Et puis de faire ce travail, créer un page.cfm qui ressemble à ceci:

<cfswitch expression="#ThisTag.ExecutionMode#"> 

    <cfcase value="START"> 

     <cfcontent reset/><cfoutput><!DOCTYPE html> 
<html> 
    <head> 
     <title>#Attributes.Title#</title> 

     <cfif StructKeyExists(Attributes,'Styles')> 
     <cfloop index="CurStyle" list="#Attributes.Styles#"> 
      <link rel="stylesheet" href="#CurStyle#"/> 
     </cfloop> 
     </cfif> 

     <cfif StructKeyExists(Attributes,'Scripts')> 
      <cfloop index="CurScript" list="#Attributes.Scripts#"> 
       <script type="text/javascript" src="#CurScript#"></script> 
      </cfloop> 
     </cfif> 

     <cfif StructKeyExists(Attributes,'HeadContent')>#Attributes.HeadContent#</cfif> 
    </head> 
    <body> 
</cfoutput> 

    </cfcase> 

    <cfcase value="END"> 
     <cfoutput> 
     </body> 
</html></cfoutput> 
    </cfcase> 

</cfswitch> 
0

Pour répondre à votre question, oui, vous devez inclure le balisage dans la page.

Comme d'autres affiches l'ont fait remarquer, il se peut que ce soit autre chose que du code HTML que vous souhaitez imprimer, comme un document PDF ou un fichier JSON. CF rend ce genre de choses très simple, ce qui fait partie de son attrait.

1

Vous pouvez également opter pour une configuration de base de modèle et avoir (meta.cfm,) header.cfm, sidebar.cfm, footer.cfm et utiliser la balise <cfinclude template=""> sur chaque page. Mieux encore, utilisez un framework pour gérer tout cela via le contrôleur, ce qui simplifierait la sortie du contenu dans différents formats.

1

Non, Coldfusion n'inclura rien que vous ne lui disiez pas. Pour une page générale qui nécessite une balise HTML/BODY (pas un morceau de code à coller), vous pouvez créer un nombre quelconque de fonctions/balises personnalisées pour produire des balises HTML/BODY, mais dans l'ensemble, la plus simple est la plus Il est probable que vous les utiliserez.

Maintenant, vous pouvez utiliser une partie du code d'en-tête/pied de page pour les coller automatiquement, mais cela peut nécessiter plus de logique pour les exclure dans certaines circonstances. Ce qui peut être exagéré si vous cherchez quelque chose de simple. Notez qu'il existe des widgets fournis par CF qui généreront QUELQUE html. Ainsi, par exemple, CFTABLE donnera un tag TABLE à un certain niveau. Mais ceci est avant tout un moyen de simplifier la création de tables alors que HTML/BODY ne peut pas être beaucoup plus simple.

1

Si ... et ceci est un gros SI ... si vous ne vous souciez pas de toutes les requêtes ayant les balises HTML d'ouverture et de fermeture, vous pouvez les ajouter à votre Application.cfm/OnRequestEnd.cfm ou Application.cfc .

Application.cfm:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

<html> 
<head> 
    <title>Page title here</title> 
</head> 
<body> 

OnRequestEnd.cfm:

</body> 
</html> 

Ou Application.cfc - OnRequest():

<cffunction name="OnRequest" output="true" returntype="void"> 

    <cfargument name="targetPage" type="string" required="true"> 

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 

    <html> 
    <head> 
     <title>Page title here</title> 
    </head> 
    <body> 
     <cfinclude template="#ARGUMENTS.targetPage#"> 
    </body> 
    </html> 

</cffunction> 

Non, ce n'est pas la meilleure façon, car c'est très limitatif, mais c'est une autre façon! : OD

Questions connexes