xml地图|网站地图|网站标签 [设为首页] [加入收藏]

您的位置:亚洲必赢 > 计算机尝试 > 【必赢棋牌app】Smarty模板学习笔记之Smarty简介,

【必赢棋牌app】Smarty模板学习笔记之Smarty简介,

发布时间:2019-08-28 21:24编辑:计算机尝试浏览(68)

    由于商铺要求quickform结合SMARTY的支出格局,前段时间几天恶补了下,跟大家享受下心得啊,quickform是二个PEA传祺类库,能够高快速生成成表单控件及表达表单的JS代码,大家恐怕感到那么些用手写JS和HTML转移不是快捷吗,用特别不是更麻烦,的确,少许的表单控件是显得不出quickform的优势的,可是如若有雅量的表单控件,举个例子OA的后台,quickform的优势就显示出来了,利用quickform有代码清晰,易于维护等风味,特别适合大中型项指标花费,更低价的是足以在smarty中轻巧使用它,^_^废话少说,来看看代码,不过我们从前最棒刺探下PEA奇骏的安装,参照:http://hi.baidu.com/wanghaozi/blog/item/81cfb7003f973687e850cd3e.html。
        由于公司用的quickform是温馨革新过的,由此代码和大家网络来看的会微微差距,涉及版权在此处就不便表明,简要呈现下中央代码,我们就当精通下呢,风趣味的朋友能够看看这篇HAOHAPPY的篇章:
        [php]
    <?php

    foreach and  foreachelse篇

    foreach用于遍历数组,能够是非关周全组,与section比较要轻松些,在smarty3中还可以未有称谓的习性,也得以采纳smarty2有名称的特性。与{section}*(只可以循环一连的索引数组)绝相比较,{foreach}能够做别的{section}能够成功的之所以也援用使用{foreach}

    • 能够嵌套循环
    • 当foreach的值为空时,进行foreachelse运营
    • 属性:
      @index  是当前数组索引,从0开始计算。
      @iteration  是现阶段循环的次数,和index不一样,他从 1 开端,在每一趟循环都会加1。
      @first 当循环{foreach}是第一回巡回时,first将为TRUE
      @ last  当{foreach}巡回到了最后三遍时, last将为TRUE
      @show
      @tottal 是整个{foreach}巡回的次数。 total能够在{foreach}其间,可能未来选拔
    • 语法命令:{break}终止循环, {continue}将跳过当前这一次巡回并走入下三回巡回
    • 代替钦赐的 key 变量,能够因此{item@key}来利用当前巡回的key

      {foreach $arrayvar as $itemvar}

      {foreach $arrayvar as $keyvar=>$itemvar}

       

      {foreach from=$foreach_else item=first_loops_element name=first_loops_name key=fisrt_loops_key}

    {foreach} example

    index.php:
    $foreach_else = array(
        'first_layout1' => array('second_layout1'),
        'first_layout2' => array('second_layout2'),
        'first_layout3' => array('second_layout3')
    );
    $res = array();
    foreach.tpl:
    
    {foreach $foreach_else as  $item}
        第一次循环的键值:{$item@key}
        <br>
        {foreach $item as $value}
            进入第二次循环:{$value@key}=>{$value}
            <br>
            {foreachelse}
            this is the loop end
        {/foreach}
    {/foreach}
    
    {foreach $res as $r}
        {$r.id}
        {$r.name}
        {foreachelse}
        .. no results ..
    {/foreach}
    
    
    then the result:
    
    第一次循环的键值:first_layout1 
    进入第二次循环:0=>second_layout1 
    第一次循环的键值:first_layout2 
    进入第二次循环:0=>second_layout2 
    第一次循环的键值:first_layout3 
    进入第二次循环:0=>second_layout3
    

    一经循环三个迭代器的话,比循环二个数组快。

    小说来源

    1、简介

    /*
    *作者:辉老大
    *页面:path.cfg.php
    *功用:系统路线设置
    *版权全数:随意copy^_^
    */

    @index
    {foreach $connect_arr as  $item}  
    
      {if $item@index eq 3}      
    
      输出 :{$item}    {/if}  
    
      {foreachelse} 
    
       数组的索引小于 3
    
    {/foreach}
    
     
    
    @iteration
    
     
    
    index.php: 
    
    $num_count = array(1, 2, 3, 4, 5, 6);
    
     
    
    tpl.tpl
    
    {foreach $num_count as $name}
    
        {if $name@iteration is div by 4}
    
            <b>{$name@iteration}</b>
    
        {/if}
    
        {$name}
    
    {/foreach}
    
     
    
     
    
    //is even/odd by 可以用于奇偶交错
    
    $num_count = array(1, 2, 3, 4, 5, 6,7,8,);
    
    {foreach $num_count as $name}
    
        {if $name@iteration is even by 3}
    
            <b>{$name}</b>
    
            {else}
    
            {$name}
    
        {/if}
    
    {/foreach}
    
     
    
     
    
     
    

    3.1 What is Smarty? / 什么是Smarty

    斯马特y 3 是一个Shopware前段的模版(template)工具。有了它,你不要求懂比较多PHP的学识,只须要静心于HTML,CSS和JavaScript和一丢丢斯马特y的知识就够了。

    斯马特y是一个接纳PHP写出来的沙盘PHP模板引擎,是近期产业界最有名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和采纳的措施,用来将原先与HTML代码混杂在一道PHP代码逻辑分离。一言以蔽之,目标正是要使PHP技士同前端分离,使PHP程序猿改造程序的逻辑内容不会影响到前端的页面设计,前端重新修改页面不会影响到程序的程序逻辑,那在多人合营的门类中显的一发重大。

    $global['path']['conf']     = $global['path']['root']【必赢棋牌app】Smarty模板学习笔记之Smarty简介,QUICKFORM小小演示。 . 'conf/';//定义系统布局文件路线
    $global['path']['lib']      = $global['path']['root'] . 'lib/';//定义系统库文件路线

    3.2 The basics / 基础知识

    斯马特y的语法和HTML,XML等标记语言很像。每个Smarty标签都是花括号 { 开端,以花括号 } 结束,仿佛HTML中的 <> 同样。包罗斯马特y的文本后缀名字为 .tpl。 你能够把它就是三个包含了Smarty标签的HTML文书档案。
    模板引擎(template engine)会渲染tpl文件并转变来有效的HTML文件情势。

    举例:简单的Smarty标签
    {s name="shopName"}DemoShop{/s}
    {s}标签用于定义文本片段,并使他可翻译(make it translatable)。可以看到,斯马特y标签都在花括号内,和HTML同样,它也得以有两样的天性举例此处的 name=""。

    3.2.1 Variables
    为了开端斯马特y的就学,大家先品尝用斯马特y输出从Shopware系统获得的音讯。每种页面都由模板引擎实行渲染,并显示所需数据。全体数据都被寄放在名字为模板变量(template variables)。全体的变量都能经过斯马特y的语法:欧元符 $ 变量名 调用到。

    比喻:变量输出
    <h2>{$sArticle.name}</h2>
    该例会输出变量.name的剧情,输出样式为 h2。这里运用的相间符 . 是用以访谈其子值的(sub-values)。像本例中所看到的那么,变量能够不止是大致的string可能number类型,它能够是几个数字集,即数组(array)。
    地方的事例中,变量名称叫sArticle,该变量是个数组,包蕴了八个字段,而name是它字段中的一个。
    模板变量能够被嵌套的更加深,比方{$sArticle.image.thumbnails[0].source}。数组的富有字段能够经过 [] 语法访问到。

    3.2.2 Modifiers
    有时候大家不仅仅想要轻便的出口变量内容,还想要在它被渲染在此以前对变量进行操作。这里大家就供给Smarty修饰符(斯马特y modifiers)了。修饰符是某些用来修改动量输出的小函数。

    比喻:修饰符在变量上的行使
    `<div> {$sArticle.description|truncate:120} </div>`
    事例中,修饰符放在变量前边,通过轻易的 | 符号 修饰符名字被接纳。这里运用的truncate修饰符的效应是:将文件降低到给定的字符数量,这里是1二十一个字符,该参数通过: 数字运用。
    您能够对三个变量相同的时间采纳三个修饰符,种种修饰符之间用 | 隔离就能够。这一个修饰符会依据书写顺序一个叁个被用到。

    比方:使用四个修饰符

    比方,你想要在应用truncate方法钦命字符串数在此以前,先把内部所含有的HTML标签去掉:
    `<div> {$sArticle.description|strip_tags|truncate:120} </div>`

    3.2.3 Conditions
    不时,你大概须求依赖区别的口径输出差异的结果。这里条件语句用 {if} 标签,它含有了一口径判定,最终以 {/if} 停止。在这五个标签之间的开始和结果只在标准判定为true时,才会被输出。

    例如:定义贰个标准
    `{if $sArticle.description} {$sArticle.description} {else} {$sArticle.description_long|strip_tags|truncate:120} {/if}`
    本例中,大家定义了一个简短的规格,来检测变量是还是不是被定义。正如您所观察的,条件语句中包涵了八个{else} 标签,在原则不为真的意况下实践 {else} 标签之后的内容。更加多的基准能够经过 {elseif} 来定义。若是想询问越来越多的操作符,请点击这里

    3.2.4 Loops
    为了能够管理更加多数据,举个例子二个出品列表。大家能够通过轮回(Loops)成立八个动态输出(dynamic output)。比如,大家得以经过迭代艺术输出八个出品列表。

    例如:数组循环

    `<ul> {foreach $sArticles as $item} <li>{$item.name}</li> {/foreach} </ul>`

    巡回从 {foreach} 标签初叶,到 {/foreach} 标签停止。在最早标签中,我们定义了三个想要迭代的数组($sArticles),以及在寻呼这种即将提供的单个数据集($item)。模板引擎会对 {foreach} {/foreach} 之间的种种item进行渲染,何况生成三个带有全体产品名的新列表。

    **3.2.5 Official documentation / 官方文书档案
    斯马特y还恐怕有非常的多风味,但在这里不再赘述,如想要领悟,请点击这里平昔走入斯马特y的官方文书档案。

    2、那么smarty有怎么着长处呢?

    ?>
        [/php]
    [php]
    <?php

    3.3 Template inheritance / 模板承继

    想要编辑Shopware中已存在的沙盘文书档案(template file),你不需求拷贝全体文件或重写大旨代码。使用模板继承系统,你只需编辑真正想要改动的局地。 那有无尽益处:

    1. 没有须求拷贝整个模板
    2. 少许代码,少量有限协理
    3. 您的模板一贯能够进步(包容性)
    4. 你的模板还是可以透过插件扩充

    3.3.1 Inherit a standard theme / 承继暗许宗旨
    大家刚烈推荐你在自定义大旨时,使用模板继承系统。那样会为您省下众多时间和行事。Shopware提供了多个正规的大旨供您选用。最常见的图景是使用Shopware Responsive大旨。那是三个当代化,全响应式(fully responsiv)的主旨,它完结了Shopware 5全部风趣庞大的效用。你只须求做一些统一希图上的更换,而无需重新构建shop的一体功效。如若你想要掌握越多,而且从头开端营造筑组织调的效果,你能够继续Shopware的Bare宗旨,该核心只持续了有个别基础的HTML功效。

    比如:在Theme.php中定义三个父核心
    `class Theme extends ShopwareComponentsTheme { protected $extend = 'Responsive'; // ... }`

    3.3.2 Inheritance and plugin templates / 模板承继和插件
    在Shopware中装置的插件会被放在集成系统的特定岗位中。
    具备插件模板都坐落宗旨宗旨模板(the templates of the core themes)前面。你能够由此安装Theme.php文书档案中的$injectBeforePlugins 变量来调整,你的大旨是要在插件从前管理依旧未来管理。
    即使你想要创建一个足以在Shopware社区中被购买的日常核心,那么该变量值应该为true,那样你的宗旨就能够在插件在此以前被管理。-->这种措施保险了你能够在你的核心中选用具有插件。
    一经你想在地点修改有个别特定的插件,那么就把该变量设置为false,以扩充插件模板。
    `class Theme extends ShopwareComponentsTheme { protected $extend = 'Responsive'; protected $name = 'CustomTheme'; protected $injectBeforePlugins = true; // ... }`

    必赢棋牌app 1

    Position of plugins.png

    3.3.3 Overwriting template files / 重写模板文件
    Shopware对具备前端文件都应用一定的文件路线结构,前端的每二个有的都有协调的路线和投机的模板文件。每一个文件路线中你都得以找到index.tpl文件,它归纳了该公文路线中的基础部分。
    当您定义父主旨时,你能够在和煦的大旨路线中创制一个同名的文书, 用于重写并遮掩已存在的模板文件(template files)。
    比如说,固然您想要完全重写 "产品细节" 页面,你能够在自定义的宗旨中,找到绝对应的路径,举例 "产品细节" 页面临应的是 frontend/detail/index.tpl。
    Shopware会移动物检疫验到您创立的文本,而且将他们进入到模板承继系统中(template inheritance system)

    3.3.4 Extending template files / 扩充模板
    大多数气象下,你并不想要重写整个模板文件,只是想要编辑或修改当中的字部分。由此你供给用到斯马特y的扩充方法 {extends}。该方法要写在文书的第一行,file属性的从头到尾的经过为你想要承袭的文档路线。

    比喻:拓宽三个模板文件
    `{extends file="parent:frontend/detail/index.tpl"}`
    {extends}file="" 属性中,你定义的文书档案路线中,将暗许宗旨文件夹(theme file)为根文件夹。
    前缀parent:告诉Shopware在父大旨中查找文件。那样就能够开展父大旨中的模板了。
    被开展的文书不能有协和的HTML结构,因为你必须自身告诉引擎,你的模版代码要放在什么地方。相反,你将获得父文件定义的保有剧情块。

    注意:{extends}讲话必得写在.tpl文书档案的第一行

    3.3.5 Blocks / 代码块
    斯马特y代码块(blocks)被用来在逻辑段中构造模块代码(template code)。这几个代码块能够被其余文件在一定的岗位进行实行。通过 {block} 标签大家能够在斯马特y中开创代码块,该标签将代码内容作为七个新的段落(segment)封装起来。每种block都有 name="" 属性,给这段代码定义二个无比的名字。通过这一个名字,大家能从别的文件中拜候到这段代码。

    比喻:A.tpl中定义三个代码块

    {block name="frontend_index_logo"}
        <div class="logo--shop"> 
            //...
        </div>
    {/block}
    

    当你通过 {extends} 方法承袭A.tpl这么些模板文件时,就赢得了访问该模板文件中享有blocks的技术,你能够这么访谈这个blocks:

    {* 使用方法一 *}
    {block name="frontend_index_logo"}
        {$smarty.block.parent}
        <div class="shop--slogan"> 
            <h2>My shop is the best!</h2>
        </div>
    {/block}
    
    {* 使用方法二 *}
    {block name="frontend_index_logo" append}
        <div class="shop--slogan"> 
            <h2>My shop is the best!</h2>
        </div>
    {/block}
    

    应用办法一:

    1. 保存父代码块(parent block)的内容 ==> {$smarty.block.parent}
    2. frontend_index_logo以此Block中,加上了友好的代码 ==> <div class="shop--slogan"> ... </div>

    应用情势二:
    append本条修饰符在原Block之后增添<div class="shop--slogan"> ... </div>
    任何修饰符还恐怕有:

    • append:在parent template {block}之后增多内容
    • prepend:在parent template {block}从前增加内容
    • hide:若是该Block没有子Block,则该Block将被忽视
    • nocache:该Block禁止使用缓存

    小结一下,假若您必要编写制定或许修改承继的模块,要求如此操作:

    1. 在模板文件中找到您想要修改的block
    2. 在你和睦的theme下,依据同等的路线创设同名的模版文件
    3. 在第22中学开创的模版文件中增添 {extend} 标签,何况在file属性中写上1中找到的文本路线
    4. 在3中新建的模版文件中定义block。你可以由此将 {$smarty.block.parent} 写在自定义内容的眼下/前边,来决定自定义内容和原block内容的前后相继顺序。

    a、速度:接纳Smarty编写的顺序可以获得最大速度的加强,那点是相对于任何的模版引擎本领来讲的。

    /*
    *作者:辉老大
    *页面:smarty.cfg.php
    *意义:smarty基本配置
    *版权全部:随便copy^_^
    */

    3.4 Register custom smarty plugins / 注册自定义斯玛特y插件

    Shopware 5中,大家增加了在自定义theme中动用自定义插件的功力。客户能够创建新的修饰符和斯马特y功用。要登记四个新的插件,你供给在您的宗旨中创设连锁的文本路线结构。详细教程请点击这里

    比喻:自定义斯马特y插件的渠道
    `/_private/smarty/function.markdown.php /_private/smarty/modifier.picture.php`

    b、编写翻译型:接纳斯马特y编写的前后相继在运作时要编写翻译成三个非模板本事的PHP文件,那么些文件选用了PHP与HTML混合的法子,在下一回访问模板时将WEB诉求直接调换来这些文件中,而不再进行模板重新编译(在源程序尚未改造的情状下)

    //定义模板路线
    $global['smarty']['template_dir']       = $global['path']['root'] . 'lib/smarty/templates';
    //定义模板编写翻译目录
    $global['smarty']['compile_dir']        = $global['path']['root'] . 'lib/smarty/templates_c';
    //定义smarty配置文件夹路线
    $global['smarty']['config_dir']         = $global['path']['conf'] . 'lib/smarty/configs';
    $global['smarty']['cache_dir']             = $global['path']['root'] . 'lib/smarty/cache';

    c、缓存本领:Smarty选拔的一种缓存技能,它能够将顾客最后见到的HTML文件缓存成二个静态的HTML页,当设定斯马特y的cache属性为true时,在斯马特y设定的cachetime期内将客商的WEB央求直接转换成那一个静态的HTML文件中来,这一定于调用八个静态的HTML文件。

    //$global['smarty']['compile_check']         = true;
    //设置smarty报错禁止使用
    $global['smarty']['debugging']             = false;
    //关闭缓存
    $global['smarty']['caching']             = false;
    //$global['smarty']['cache_lifetime']     = 6000;

    d、插件技巧:斯马特y可以自定义插件。插件实际就是一些自定义的函数。

    //定义左左侧际符
    $global['smarty']['left_delimiter']     = '<{';
    $global['smarty']['right_delimiter']     = '}>';

    e、模板中得以选择if/elseif/else/endif。在模板文件使用决断语句能够极其有助于的对模板进行格式重排。

    本文由亚洲必赢发布于计算机尝试,转载请注明出处:【必赢棋牌app】Smarty模板学习笔记之Smarty简介,

    关键词: 必赢亚洲26.net Smarty3 Shopware小记

上一篇:CASE语句的使用,条件语句

下一篇:没有了