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

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 语法非常接近,用于循环输出数组或者对象的属性
	    {foreach $arr as $arr_k => $arr_v}
        <p style="color: green">{$arr_k}->{$arr_v['id']}->			{$arr_v['name']}</p>
        {/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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值