博主信息
JiaJieChen
博文
60
粉丝
2
评论
5
访问量
32699
积分:0
P豆:122

PHP:【ThinkPHP】=>视图的XML 标签;请求Request类; 数据库链式操作 ;[博客实战]分类和搜索功能完成;

2021年05月28日 21:20:25阅读数:224博客 / JiaJieChen/ ThinkPHP6.0

PHP:【ThinkPHP】=>视图的XML 标签;请求Request类; 数据库链式操作 ;[博客实战]分类和搜索功能完成;

一.视图标签

标签类型描述
普通标签主要用于输出变量、函数过滤和做一些基本的运算操作
XML 标签也称为标签库标签,主要完成一些逻辑判断、控制和循环输出,并且可扩展

①普通标签 主要用于输出变量、函数过滤和做一些基本的运算操作

  • 运算符

运算符示例
+{\$a+\$b}
-{\$a-\$b}
*{\$a*\$b}
/{\$a/\$b}
%{\$a%\$b}
++{\$a++} 或 {++\$a}
{\$a—} 或{—\$a}
综合运算{\$a+\$b*10+\$c}
三元运算符{\$a==\$b ? ‘yes’ : ‘no’}


  • 模版函数

方法描述
date日期格式化(支持各种时间类型)
format字符串格式化
upper转换为大写
lower转换为小写
first输出数组的第一个元素
last输出数组的最后一个元素
default默认值
raw不使用(默认)转义
md5md5 加密
substr截取字符串


②XML标签 也称为标签库标签,主要完成一些逻辑判断、控制和循环输出,并且可扩展

  • 循环标签

    • foreach 标签的用法和 PHP 语法非常接近,用于循环输出数组或者对象的属性


    1.  {foreach $arr as $arr_k => $arr_v}

    2.  <p style="color: green">{$arr_k}->{$arr_v['id']}->            {$arr_v['name']}</p>

    3.  {/foreach}

  • volist 循环标签

    • name 模板赋值的变量名称

    • id 当前的循环变量,可以随意起名

    • key 下标,从 1 开始,默认变量 i

    • offset 开始行数

    • length 获取行数

    • empty 如果数据为空,显示此文字

    • 二维数组的结果输出

    {volist name='arr' id='v'}    <p>id={$v['id']}, name = {$v['name']}</p>    {/volist}
    • for循环标签

    标签描述
    for计数循环
    - start:开始值- end:结束值- step:步进值,默认 1- name:循环变量名,默认 i

     {for start='1' end='50' step='6' name='i'}    <p>{$i}</p>    {/for}
    • if 判断标签

      • if 标签的用法和 PHP 语法非常接近,用于条件判断

    {if $status == 0}    <div>关闭</div>    {else/}    <div>开启</div>    {/if} {if $order_status == 0}    <div>未支付</div>    {elseif $order_status == 1/}    <div>已支付 待发货</div>    {elseif $order_status == 2/}    <div>已发货 待收货</div>    {elseif $order_status == 3/}    <div>已收货 待评论</div>    {elseif $order_status == 4/}    <div>已完成</div>    {else/}    <div>已关闭</div>    {/if}
    • switch 判断标签

      • switch 标签的用法和 PHP 语法非常接近,用于条件判断

        {switch $order_status}        {case 0 }        <div>未支付</div>        {/case}        {case 1 }        <div>已支付 待发货</div>        {/case}        {case 2 }        <div>已发货 待收货</div>        {/case}        {case 3 }        <div>已收货 待评论</div>        {/case}        {case 4 }        <div>已完成</div>        {/case}        {/switch}  </body>
    • 包含文件

      • include 标签,引入模版文件

      • load 标签,引入资源文件(css、js)

    <!-- 引入公共头部 -->{include file="public/head"/}

    二.请求

    • 请求对象使用门面类( think\facade\Request类负责 )调用

    • 支持 $_GET $_POST $_REQUEST $_SERVER $_SESSION $_COOKIE $_ENV 等系统变量,以及文件上传信息

    ①GET 请求

    • GET实战提交

    ②POST 请求

    • POST实战提交

    ③变量修饰符

    序号修饰符作用
    1s强制转换为字符串类型
    2d强制转换为整型类型
    3b强制转换为布尔类型
    4a强制转换为数组类型
    5f强制转换为浮点类型

    语法:Request::get(‘t/d’)

    ④Request 依赖注入

    public function index2(Request $request)    {        print_r($request->get('t/d'));        return View::fetch();    }

    助手函数

    • input获取输入数据 支持默认值和过滤

    三.数据库链式操作

    • 数据库提供的链式操作方法,可以有效的提高数据存取的代码清晰度和开发效率,并且支持所有的 CURD 操作

    • where 查询条件

    $find = Db::table('boke')->where('id',10)->where('status',1)->find();print_r($find);
    • tablename

    $select = Db::name('boke')->select();print_r($select);$select = Db::table('boke')->select();print_r($select);$select = Db::table('boke,cat')->select();print_r($select);$select = Db::table('boke b,cat c')->select();print_r($select);$select = Db::table([    'boke',    'cat'])->select();print_r($select);$select = Db::table([    'boke' => 'b',    'cat' => 'c'])->select();print_r($select);
    • fieldwithoutField 返回值

      • field

        filed 返回指定的字段

      • withoutField

        withoutField 舍去指定的字段

    • order 排序

      • 默认正序

      • asc ASC 正序

      • desc DESC 倒序

    • pagelimit 翻页

      • limit

        limit 是在数据表中取指定的几条数据

      • page

        page 是在数据表中取翻页数据,第一个值是页数,第二个值是设置一页有几条数据

    四.[博客实战]分类和搜索功能完成;

    • * 标识的表示支持多次调用

    连贯操作作用支持的参数类型
    where*用于 AND 查询字符串、数组和对象
    table用于定义要操作的数据表名称字符串和数组
    name用于定义要操作的数据表名称字符串
    field*用于定义要查询的字段(支持字段排除)字符串和数组
    order*用于对结果排序字符串和数组
    limit用于限制查询结果数量字符串和数字
    page用于查询分页(内部会转换成 limit)字符串和数字
    • 博客实战

    ThinkPHP代码块

    public function index()    {           //查询文章和导航相对应绑定的值        $id = Request::get('id',0);        //查询搜索值        $t = Request::get('t');        //查询翻页值        $p = Request::get('p',1);        if (isset($id) && !empty($id)) {            //查询分类文章            $count = Db::table('boke')->where('status',1)->where('cat',$id)->count();            $boke = Db::table('boke')            ->where('status',1)            ->where("cat",$id)            ->page($p,10)            ->order('date DESC')            ->select();        }else if (isset($t) && !empty($t)){            //查询搜索文章            $count = Db::table('boke')->where('status',1)->where('title',$t)->count();            $boke = Db::table('boke')            ->where('status',1)            ->where('title',$t)            ->page($p,10)            ->order('date DESC')            ->select();        }else {            //查询全部文章            $count = Db::table('boke')->where('status',1)->count();            $boke = Db::table('boke')            ->where('status',1)            ->page($p,10)            ->order('date DESC')            ->select();        }        //查询导航字段        $cat = Db::table('cat')                ->where('status',1)                ->order('sort DESC')                ->select();        //查询热门文章        $TopArticle = Db::table('boke')                    ->where('status',1)                    ->order('num DESC')                    ->limit(3)                    ->select();        View::assign([            'boke' => $boke,            'cat' => $cat,            'count' => ceil($count/10),            'TopArticle' => $TopArticle        ]);        return View::fetch('');    }

    html代码块

    <body class="home blog custom-background custom-font-enabled single-author">    <div id="page" class="hfeed site">      <header id="masthead" class="site-header" role="banner">        <hgroup>          <h1 class="site-title">            <a href="/" title="JiaJieChen个人博客" rel="home">JiaJieChen个人博客</a>          </h1>          <h2 class="site-description">同学们大家好。</h2>        </hgroup>        <nav id="site-navigation" class="main-navigation" role="navigation">          <ul class="nav-menu">            <li>              <a href="/index.html?">首页</a>            </li>            {foreach $cat as $cat_v}            <li>              <a href="?id={$cat_v['id']}">{$cat_v['name']}</a>            </li>            {/foreach}          </ul>        </nav>      </header>      <div id="main" class="wrapper">        <div id="primary" class="site-content">          <div id="content" role="main">            {foreach($boke as $boke_v)}            <div id="content" role="main">              <article>                <header class="entry-header">                  <h1 class="entry-title">                    <a href="/details.html" title="构建Nginx和PHP镜像" rel="bookmark">{$boke_v['title']}</a>                  </h1>                </header>                <div class="entry-content">{$boke_v['title']}</div>                <footer class="entry-meta">                  发布于                  <a href="/index.html?time=2020-10-02" title="2020-10-02" rel="bookmark">                    <time class="entry-date" datetime="2020-10-02">{$boke_v['date']}</time> </a                  >。 属于 <a href="/index.html?cate=4" title="查看 Linux中的全部文章" rel="category">{$boke_v['cat']}</a>分类                </footer>              </article>            </div>            {/foreach}          </div>          <div class="page">            <nav>              <ul class="pagination">                <li class="page-item disabled" aria-disabled="true" aria-label="&laquo; 上一页">                  <span class="page-link" aria-hidden="true">&lsaquo;</span>                </li>                {for start='0' end="$count" name='i'}                <li class="page-item">                  <a class="page-link" href="?p={$i+1}">{$i+1}</a>                </li>                {/for}                <li class="page-item">                  <a class="page-link" href="/index.html?page=2" rel="next" aria-label="下一页 &raquo;">&rsaquo;</a>                </li>              </ul>            </nav>          </div>        </div>        <div id="secondary" class="widget-area" role="complementary">          <aside id="search-2" class="widget widget_search">            <form role="search" id="searchform" action="" method="POST">              <div>                <label class="screen-reader-text" for="t">搜索:</label>                <input placeholder="搜索" type="text" class="no-border" name="keywords" id="t" />                <input type="submit" class="btn btn-default" id="searchsubmit" value="搜索" />              </div>            </form>            <script type="text/javascript">              $(function () {                $("#searchsubmit").click(function () {                  if ($("#t").val() != "") {                    location.href = "/index.html?t=" + $("#t").val();                  }                  return false;                });              });            </script>          </aside>          <aside id="recent-posts-2" class="widget widget_recent_entries">            <h3 class="widget-title">热门文章</h3>            <ul>              {foreach $TopArticle as $TopArticle_k => $TopArticle_v }              <li>                <font style="color: #7a7a7a">{$TopArticle_k+1}</font>&nbsp;                <a href="/details.html?id=20" title="{$TopArticle_v['title']}">{$TopArticle_v['title']}</a>              </li>              {/foreach}            </ul>          </aside>        </div>      </div>      <footer id="colophon" role="contentinfo">        <div class="site-info">          <span>友情链接:</span>          <a href="https://www.php.cn" target="_blank">PHP中文网</a>        </div>      </footer>      <footer role="contentinfo" style="margin-top: 0">        <div class="site-info" style="text-align: center">          <span>            <a href="https://beian.miit.gov.cn" target="_blank">苏ICP备2020058653号-1</a>          </span>        </div>      </footer>    </div>  </body>
    批改状态:未批改

    老师批语:

    版权申明:本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!

    全部评论

    文明上网理性发言,请遵守新闻评论服务协议

    条评论