欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

5.29模板动态布局与模板继承技术

程序员文章站 2022-03-03 19:21:13
...
  • 模板动态布局,在控制器中动态布局  不需要再模板配置文件中进行配置  也不需要在模板中写任何的标签

  • 实例

    <?php 
      class Index{
           //模板布局
        public function demo4()
        {
            /**
             * 1 全局配置 config/template.php
             * 2 模板标签布局
             * 3 在控制器中动态布局  不需要再模板配置文件中进行配置  也不需要在模板中写任何的标签
             */
            //return $this -> view -> fetch();
            // 动态开启布局 并且是局部的 只针对当前模板起作用
            // 调用engine这个属性  engine这个属性存放的也是一个对象 所有要调用layout方法
            $this -> view -> engine -> layout(true);
            //动态关闭布局
            $this -> view -> engine -> layout(false);
            //替换模板内容
            $this -> view -> engine -> layout("layout","{__TEXT__}");  //修改替换内容  可以修改布局文件中的占位符标志  
           //return $this -> view -> fetch();
    
            //如果合并写 fetch() 方法参数不能省略 并且模板表达式至少要写到控制器
            return $this -> view
                        -> engine 
                        -> layout(true) 
                        -> fetch("index@index/demo4");
    
            }
       }
    ?>

    运行实例 »

    点击 "运行实例" 按钮查看在线实例

  • 模板继承

  • 首先要在view目录下创建一个父类模板  并且该父类模板中只能有block标签 

  • 凡是写在父类模板区块之外的标签 全部被原样输出

  • 在父模板中使用block标签的方式为:{block name="区块名称且不允许重复"}内容{/block}


  • 实例

    //父模板中的标签使用方式
    {//基础模板中 只允许出现block标签  不允许出现任何其他的标签}
        <!--{//公共头部 /}-->
        {block name="header" /}
            {include file="public/header"}
        {/block}
    
        {block name="main"}
            主题部分
        {/block}
    
        {block name="course"}
            课程名称:
        {/block}
    
        {block name="name"}
            姓名
        {/block}
    
        {//在父模板中凡是写在区块之外的标签全部被原样输出}
        <a href="">链接</a>
        <!--{//公共尾部}-->
        {block name="footer" /}
            {include file="public/footer"}
        {/block}

    运行实例 »

    点击 "运行实例" 按钮查看在线实例

  • 在子模板中进行继承使用,使用方式为:{extend name="父模板名称" /}


  • 实例

    {extend name="base" /}
            
            {//重写父模板中的对应区块内容 会覆盖父模板中的}
            {block name="main"}
                <h1 style="color: red;text-align: center">我是模板继承网站中的主题部分</h1>
            {/block}
    
            {block name="course"}
                <!--{__block__} 输出父模板中的内容-->
                <h1 style="color: blueviolet;text-align: center"> {__block__}PHP编程</h1>
            {/block}
    
    
            {//区块当中不写任何内容可以删除当前父模板中的内容}
                <a href="">这是链接</a>
            {//在子模板中凡是写在区块之外的标签全部被忽略}
            {block name="name"}{/block}
            <!--<h1>模板继承</h1>-->

    运行实例 »

    点击 "运行实例" 按钮查看在线实例