模板标签、分页与文件上传

原创 2018-12-20 10:58:55 192
摘要:一.foreach循环标签     双标签,类似于原生foreach,用来遍历模板变量数组的{foreach $staffs as $staff} <tr>     <td>{$staff.staff_id}</td>   

一.foreach循环标签 

    双标签,类似于原生foreach,用来遍历模板变量数组的

{foreach $staffs as $staff}
<tr>
    <td>{$staff.staff_id}</td>
    <td>{$staff.name}</td>
    <td>{$staff.sex}</td>
    <td>{$staff.age}</td>
    <td>{$staff.salary}</td>
</tr>
{/foreach}

二.assign标签 在当前模板中创建变量,来保存数据表中的数据    value为变量的值,执行一个方法要在前面加:

{assign name="staffs" value=":\app\index\model\Staff::all()"}
{//用助手函数来简化}
{//assign name="staffs" value=":model('staff')::all()"}

三.volist标签,使用最广泛的,参数众多,功能强大  双标签也是遍历输出   name传入模板的变量  id循环的变量  offset偏移值(从哪个索引开始)  length显示条数

{volist name="staffs" id="staff" offset="3" length="5"}
    <tr>
        <td>{$staff.staff_id}</td>
        <td>{$staff.name}</td>
        <td>{$staff.sex}</td>
        <td>{$staff.age}</td>
        <td>{$staff.salary}</td>
    </tr>
{/volist}

    * empty标签判断是否为空    双标签

{empty name="staffs"}
    <h3 style="color: #761c19;">当前数据表为空,请检查数据</h3>
{/else}
    {volist name="staffs" id="staff"}
        <tr>
            <td>{$staff.staff_id}</td>
            <td>{$staff.name}</td>
            <td>{$staff.sex}</td>
            <td>{$staff.age}</td>
            <td>{$staff.salary}</td>
        </tr>
    {/volist}
{/empty}

四.数据分页  运用模型类中的paginate方法来实现 默认bootstrap

    1.paginate(每页显示数量,是否是简单分页,分页配置) 返回一个分页对象

    2.render()方法返回一个分页变量  

//分页设置
$config = [
    'type'=>'bootstrap',
    'var_page'=>'page'
];
//每页显示数量
$num = 5;

//是否是简单分页  就只有上一页 和下一页
$simple = false;
//用模型来获取所有的分页数据: think\Paginate
//返回一个分页对象
$paginate = StaffModel::paginate($num,$simple,$config);
//渲染分页HTML代码,返回一个分页变量
$page = $paginate->render();
//渲染变量
$this->view->assign('staffs',$paginate);
$this->view->assign('page',$page);
//渲染模板
return $this->view->fetch();

五.文件上传(***出现问题了***)

    1.文件上传时use think\facade\Request 静态代理之后,使用Request::file('file')来获取上传的文件信息

//1.获取文件的信息
$file = Request::file('file');
/****************问题在这 空文件上传继续报错,不回执行下面这段,还有文件过大也是直接报错 *******************/
if(is_null($file)){
    $this->error('空文件上传');
}
/************曾经试过如下这样,但是文件过大不行,文件过大打印$_FILES['file']['size']也为0************/
if($_FILES['file']['size'] === 0){
    $this->error('空文件上传');
}
if($_FILES['file']['size'] > 20000000){
    $this->error('文件过大');
}

    2.移动文件到服务器上的指定目录:public/uploads,并限定格式

//如果上传成功返回的是一个已经复制的文件对象,失败返回false,将文件移动到uploads文件夹中,调用文件对象的validate方法进行格式限制
$res = $file->validate(['ext'=>'jpg,jpeg,gif,png'])->move('uploads');

    3.确定是否上传成功,做出回应

if($res == false){
    $this->error($file->getError());
}
$this->success('上传成功');

请老师帮忙解答一下

**************************************************************修改******************************************************************

通过查看手册发现 validate(['size'=>200000,'ext'=>'jpg,jpeg,gif,png']) 添加size,在加上$_FILES['file']['size'] === 0 的判断,然后修改一下php.ini的upload_max_filesize的大小 将size的大小设置小于 php.ini的设置,即可解决这个问题了,不知道这么做是否可以?


批改老师:韦小宝批改时间:2018-12-20 11:12:15
老师总结:你先尝试一下,手册讲的这种去修改一下!如果还报错就直接私聊我!

发布手记

热门词条