import extends useinclude语句包含入一个模板并在当前命名空间返回其渲染的_第1页
import extends useinclude语句包含入一个模板并在当前命名空间返回其渲染的_第2页
import extends useinclude语句包含入一个模板并在当前命名空间返回其渲染的_第3页
import extends useinclude语句包含入一个模板并在当前命名空间返回其渲染的_第4页
import extends useinclude语句包含入一个模板并在当前命名空间返回其渲染的_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

¶ statementincludesatemteandreturnstherenderedcontentofthatfileintothecurrentIncludedtemteshaveaccesstothevariablesoftheactiveIfyouareusingthefilesystemloader,thetemtesarelookedforinthepathsdefinedbyYoucanaddadditionalvariablesbypassingthemafter Youcandisableaccesstothecontextbyappending Whenincludingatemtecreatedbyanenduser,youshouldconsidersandboxingit.MoreinformationintheTwigforDeveloperschapterandinthesandboxtagation.的TwigforDevelopers的sandboxThetemtenamecanbeanyvalidTwigAndiftheexpressionevaluatesto object,TwigwilluseitNewinversion1.2:ThefeaturehasbeenaddedinTwigYoucanmarkanincludewithinwhichcaseTwigwillignorethestatementifthetemtetobeincludeddoesnotexist.Ithastobecedjustafterthetemtename.Heresomevalidexamples:你可以用ignoremissing标记一个include,这样Twig将忽略此模板不存在的情况。这个参数直接加到模板名后Newinversion1.2:ThepossibilitytopassanarrayoftemteshasbeenaddedinTwigYoucanalsoprovidealistoftemtesthatarecheckedforexistencebeforeinclusion.Thefirsttemtethatexistswillbeincluded:Ifisgiven,itwillfallbacktorenderingnothingifnoneofthetemtesexist,otherwiseitwillthrowanexception. ¶Twigsupportsputtingoftenusedcodeintomacros.Thesemacroscangointodifferenttemtesandgetimportedfromthere.Therearetwowaystoimporttemtes.Youcanimportthecompletetemteintoavariableorrequestspecificmacrosfromit.Imaginewehaveahelpermodulethatrendersforms 想象一下我们有一个渲染表单的协助器模块(叫forms.html):Theeasiestandmostflexibleisimportingthewholemoduleintoavariable.ThatwayyoucanaccesstheAlternativelyyoucanimportnamesfromthetemteintothecurrentToimportmacrosfromthecurrentfile,usethe variableforthe¶ tagcanbeusedtoextendatemtefromanotherLikePHP,Twigdoesnotsupportmultipleinheritance.Soyoucanonlyhaveoneextendstagcalledperrendering.However,Twigsupportshorizontalreuse.,Let'sdefineabasetem ,whichdefinesasimpleHTMLskeletonInthisexample,theblocktagsdefinefourblocksthatchildtemtescanfillAllthe tagdoesisto lthetemteenginethatachildtemtemayoverridethoseportionsoftheChild Achildtemtemightlooklike tagisthekeyhere.Itlsthetemteenginethatthistemte"extends"anothertemte.Whenthetemtesystemevaluatesthistemte,firstitlocatestheparent.Theextendstagshouldbethefirsttaginthetemte.Notethatsincethechildtemtedoesn'tdefinethe block,thevaluefromtheparenttemteisusedinstead.Youcan'tdefinemultiple tagswiththesamenameinthesametemte.Thislimitationexistsbecauseablocktagworksin"both"directions.Thatis,ablocktagdoesn'tjustprovideaholetofill-italsodefinesthecontentthatfillstheholeintheparent.Ifthereweretwo tagsinatemte,thattemte'sparentwouldn'tknowwhichoneoftheblocks'contenttouse.Ifyouwanttoprintablockmultipletimesyoucanhoweveruse 首先它定位父模板。extends应该模板里的顶一个。你不能在同一个模板里给多个block同一个名称。这个限制条件的存在是因为一个block可以“双向”工作。一个block不仅是提供一个洞去填充,它也是定义填充父模板的内容。如果一个模板里有两个类似名ParentIt'spossibletorenderthecontentsoftheparentblockbyusingtheparentfunction.Thisgivesbacktheresultsoftheparentblock:NamedBlockEnd-TwigallowsyoutoputthenameoftheblockaftertheendtagforbetterOfcourse,thenameafter wordmustmatchtheblockBlockNestingandBlockscanbenestedformorecomplexlayouts.Perdefault,blockshaveaccesstovariablesfromouter当然,endblock里的名称必须和blockname相符。BlockForblockswithfewcontent,it'spossibletouseashortcutsyntax.ThefollowingconstructsdotheDynamicTwigsupportsdynamicinheritancebyusingavariableasthebasetemIfthevariableevaluatesto object,TwigwilluseitastheparenttemNewinversion1.2:ThepossibilitytopassanarrayoftemteshasbeenaddedinTwigYoucanalsoprovidealistoftemtesthatarecheckedforexistence.Thefirsttemtethatexistswillbeusedasaparent:AsthetemtenamefortheparentcanbeanyvalidTwigexpression,it'spossibletomaketheinheritancemechanismconditional:Inthisexample,thetemtewillextendthe"minimum.html"layouttemteifthevariableevaluatesto ,and"base.html"otherwise.Howdoblockswork?Ablockprovidesawaytochangehowacertainpartofatemteisrenderedbutitdoesnotinterfereinanywaywiththelogicaroundit.Let'stakethefollowingexampletoillustratehowablockworksandmoreimportantly,howitdoesnotwork:在这个例子里,如果变量tandalone变量是true模板将扩展“minimum.html”扩展“bas.html”block提供法修改一个模板的确定部分怎样渲染,但它不涉及任何逻辑。让我们用下边的例子说明一个block112345678{#base.twig{%forpostinposts{%blockpost<h1>{{post.title<p>{{post.body{%endblock{%endforIfyourenderthistemte,theresultwouldbeexactlythesamewithorwithoutthe insidethe loopisjustawaytomakeitoverridablebyachildtemte:如果你渲染这个模板,结构将确切的会是同样有或者没有lock。在for循环里的block是一种让子模板覆盖的方法:1123456789{#child.twig{%extends"base.twig"{%blockpost<header>{{post.title<section>{{post.text{%endblockNow,whenrenderingthechildtemte,theloopisgoingtousetheblockdefinedinthechildtemteinsteadoftheonedefinedinthebaseone;theexecutedtemteisthenequivalenttothefollowingone:现在,当渲染子模板,循环会使用子模板定义的lock{%{%forpostinposts<header>{{post.title<section>{{post.text{%endforLet'stakeanotherexample:ablockincludedwithin 11234567{%ifpostsisempty{%blockhead{{parent()<metaname="robots"content="noindex,{%endblockhead{%endifContrarytowhatyoumightthink,thistemtedoesnotdefineablockconditionally;itjustmakesoverridablebyachildtemtetheoutputofwhatwillberenderedwhenthecondition Ifyouwanttheoutputtobedisyedconditionally,usethefollowing或许和你相反,这个模板没定义一个block条件,当条件是true时它仅仅由子模板覆盖将 {%blockhead{{parent()4423{%ifpostsisempty<metaname="robots"content="noindex,{%endif{%endblockhead567¶Newinversion1.1:HorizontalreusewasaddedinTwigHorizontalreuseisanadvancedTwigfeaturethatishardlyeverneededintemtes.Itismainlyusedbyprojectsthatneedtomaketemteblocksreusablewithoutusinginheritance.TemteinheritanceisoneofthemostpowerfulTwig'sfeaturebutitislimitedtosingleinheritance;atemtecanonlyextendoneothertemte.Thislimitationmakestemteinheritancesimpletounderstandandeasytodebug:Horizontalreuseisawaytoachievethesamegoalasmultipleinheritance,butwithouttheassociated lsTwigtoimporttheblocksdefinedin intothecurrenttemte(it'slikemacros,butforblocks):Inthisexample,the statementimportsthe blockintothemaintemte.Thecodeismostlyequivalenttothefollowingone(theimportedblocksarenotoutputtedautomatically): tagonlyimportsatemteifitdoesnotextendanothertemte,ifitdoesnotdefinemacros,andifthebodyisempty.Butitcanuseothertemtes. statementsareresolvedindependentlyofthecon

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论