




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
¶ 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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司财务管理流程
- 慢性病患者康复计划
- 家具印刷管理细则
- 心理咨询服务制度实施方案制定计划
- 2025重庆市永川区教育委员会招聘公益性岗位人员1人笔试备考试题及答案解析
- 如何引导初高中学生建立正确的人际交往观念
- 实施仪表工业绿色生产方案
- 园艺养护技巧:花草长寿不难
- 2025兴业银行总行国际业务部交易银行部招聘考试含答案
- 2025下半年北京密云区事业单位招聘62人笔试备考试题及答案解析
- 部编人教版六年级上册道德与法治全册教案
- 第13章第2节 人体免疫课件-2025-2026学年北师大版八年级上册生物
- 2025上海科技馆招聘高层次专业技术人才3人备考考试试题及答案解析
- 2025年秋季学期安全主题班会教育记录
- 线路维护材料管理办法
- 2025年外企面试英语常见问题与答案解析
- 火电厂安全员课件
- 洗煤厂冬季三防知识培训课件
- Unit 1 A new start Starting out 课件(内嵌音视频)高一英语外研版必修第一册
- 2025西安医学院第一附属医院第二批招聘(42人)考试备考题库及答案解析
- 树立正确就业观课件
评论
0/150
提交评论