ThinkPHP5——视图操作

视图实例化
1)加载页面

return $this->fetch(参数1, 参数2, 参数3, 参数4);
// 参数1(字符串):模板渲染
// 参数2(数组):模板赋值
// 参数3(数组):模板替换
// 参数4(数组)

注:使用fetch方法需继承Controller类

2)模板赋值
a.通过系统控制器Controller类的fetch()方法进行赋值

$name = "wjc";
$this->assign('name', $name);
reutrn view();

b.通过fetch()方法赋值

$name = "wjc";
return fetch("", ["name"=>$name]);

3)模板替换(即对引入文件路径的统一操作)
a.全局替换(app\config.php)

'view_replace_str'       => [
        '__HMOE__'=>'/static/home/public',
        '__ADMINS__'=>'/static/admin/public'
      ],

b.部分替换通过fetch()方法

return $this->fetch('', [], ['__HMOE__'=>'/static/home/public']);

4)模板渲染
a.加载当前模块所对应方法名的.html文件

return $this->fetch('index');

b.加载User控制器下的index.html

return $this->fetch('User/index');

模板
1)模板标签
a.普通标签(app\config\template)

       // 模板引擎普通标签开始标记
       'tpl_begin'    => '{',
       // 模板引擎普通标签结束标记
       'tpl_end'      => '}',

b.页面中使用

<h2>{$str}</h2>

a.标签库定界符

 // 标签库标签开始标记
 'taglib_begin' => '{',
 // 标签库标签结束标记
 'taglib_end'   => '}',

页面中使用(例)

{for start="1" end="10"}
        {$i}
 {/for}

2)输出变量
a.分配并使用字符串

//控制器中
$this->assign("str", "好好学习天天向上");
//页面中
<h2>{$str}</h2>

b.分配并使用数组

//控制器中
$data = [
      "name"=>"张三",
      "age"=>18,
      "sex"=>"男"
      ];
      $this->assign("data", $data);
//页面中
<h2>{$data.name}</h2>
<h2>{$data.age}</h2>
<h2>{$data.sex}</h2>

3)使用函数对数据进行处理

//对数据进行md5加密
<h2>{$pass | md5}</h2>
//对时间进行格式化处理
<h2>{$time | date="Y-m-d H:i:s", ###}</h2>
//对数据进行多个函数处理(此处是加密|大写|截取字符串从0开始长度为10)
<h2>{$pass|md5|strtoupper|substr=0,10}</h2>

//也可以直接通过:号直接使用函数对数据进行函数处理
<h2>{:md5($pass)}</h2>
<h2>{:date('Y-m-d H:i:s')}</h2>

4)默认值,即为输出的变量设置默认值

<h2>{$name|default="wjc"}</h2>

5)三元运算符

//可以带条件
<h2>{$status==1?'正常':'错误'}</h2> 
//可以不带条件
<h2>{$status?'正常':'错误'}</h2> 

6)运算符

//实现加减乘除以及取余操作
<h2>{$a}+{$b}={$a+$b}</h2>
<h2>{$a}-{$b}={$a-$b}</h2>
<h2>{$a}*{$b}={$a*$b}</h2>
<h2>{$a}/{$b}={$a/$b}</h2>
<h2>{$a}%{$b}={$a%$b}</h2>

7)使用{literal}标签原样输出字符

{literal}
       <h2>hello {$name}</h2>
{/literal}

8)系统变量
a.系统变量

<h1>{$_GET['id']}</h1>
<h1>{$Think.get.id}</h1>
<h1>{$_SERVER['HTTP_HOST']}</h1>
<h1>{$Think.SERVER.HTTP_HOST}</h1>

注:tp5支持输出 $_SERVER、$_ENV、 $_POST、 $_GET、 $_REQUEST、$_SESSION和 $_COOKIE变量。

b.常量信息的输出

<h1>{$Think.const.app_path}</h1>
<h1>{$Think.think_path}</h1>
<h1>{$Think.Is_WIN}</h1>
<h1>{$Think.THINK_VERSION}</h1>

c.配置文件信息的输出(具体可更据配置文件配置文件app\config.php输出所需要的信息)

 <h2>{$Think.config.default_lang}</h2>

9)模板的注释

//和大多编程语言相同
<h1>{//$_GET['id']}</h1>
<h1>{/*$Think.get.id*/}</h1>

注:此处不可直接使用网页的注释方式!
10)包含文件,即可以通过将网页中相同的部分单独新建一个网页存放,然后其他网页可以通过它引用,即提高了网页的可维护性

//包含单个文件
{include file="public/header"}
 //也可以包含多个文件
{include file="public/header, public/header"}

11)模板布局
a.通过在视图目录(D:\htdocs\tp5\application\admin\view)下新建layout.html(名字可任取)
b.在layout.html中保留网站所需要的公共部分代码,删除非公共部分,并用{CONTENT}代替非公共部分(注意:该标签只能存在一个!)
c.页面中引入模板

//映入模板布局
{layout name="layout"/}
     //非公共区域的内容
      <div class="col-md-10">
      <div class="jumbotron">
         	<img src="__ADMINS__/img/4.jpg"height="310px" width="100%" alt="">
    </div>
  </div>

模板继承
1)在视图下新建layout.html文件
2)在layout.html文件中对页面进行分割

 <!--导航区域-->
  {block name="nav"}
  {/block}
     <!-- 菜单区域 -->
       <div class="row body">
          {block name="menu"}
            {/block}
       <!-- 内区域容 -->
       {block name="main"}
      {/block}
       </div>
     </div>

3)在网站页面中使用{extend name=“模板名”/}标签
,然后在相应的区域内引用所需要的页面。

      {block name="nav"}
      {include file="public/nav"/}
      {/block}

      {block name="menu"}
      {include file="public/menu"/}
      {/block}
      {block name="main"}
      <div class="col-md-10">
        <div class="jumbotron">
          <img src="__ADMINS__/img/4.jpg"height="310px" width="100%" alt="">
        </div>
      </div>
      {/block}
      
      //注:在使用模板的网页中可以声明相应的区域名,也可以不声明,具体可以查看手册。

猜你喜欢

转载自blog.csdn.net/qq_42049445/article/details/86020643