• ThinkPHP 5.1 基础知识


    ==========================================
    //模板中的默认标题
    {$title|default='默认标题'}
    ==========================================
    模板中的循环
    {volist name='data' id='list'}
    <span>{$list.id}</span>
    {/volist}
    ===========================================
    模板中的静态文件,放在/public/static/下。
    模板中引用静态文件:
    <script src='/static/js/jquery.js'></script>
    ============================================
    分页:
    thinkdbQuery.php里有个paginate方法,实现sql的分页;
    $data = appmodelStudent::paginate(5);
    $this->view->assign('data',$data);
    return $this->view->fetch();
    模板中:
    <div class='text-center'>{$data|raw}</div>
    ===============================================
    模板中的if标签:
    {if $list.grade >= 60}
    <span>及格</span>
    {else/}
    <span>不及格</span>
    {/if}
    =================================================
    模型的命名空间:
    namespace app模块名model;
    ==================================================
    Phpstorm编辑器和Subline编辑器,
    快速生成html标签的快捷键是:
    html:5然后按tab键。
    (可以是html后缀的文件,也可以是.php后缀的文件)
    ===================================================
    //直接将内容输出到页面,不通过模板:
    return $this->view->dispaly($content);
    //使用视图将数据进行输出:
    $this->view->assign('data',$content);
    return $this->view->fetch();
    =================================================
    ----模板布局---
    在配置文件中:
    'layout_on' => true,
    'layout_name' => 'layout'
    在模板中:
    模板文件放在view目录下,例如header和footer两个文件。
    {include file="header" /}
    <span></span>
    {include file="footer" /}
    或者:
    创建在view目录下,创建layout文件:
    {include file="header" /}
    {__CONTENT__}
    {include file="footer" /}
    其中__CONTENT__是文件可以替换的部分。
    如果不想用__CONTENT__,可以在配置中写:
    'layout_item' => '{__TEXT__}'
    =================================================
    h2然后tab,可以不全<h2></h2>
    ===================================================
    ---模板继承---
    (1)关掉模板布局
    'layout_on' => false

    (2)在view下创建一个公共模板目录,public。

    (3)创建公共的header和footer。

    (4)然后建一个基础模板文件base:
    {include file="public/header" /}
    {block name="body"}
    父模板内容
    {/block}
    {include file="public/footer" /}

    (5)具体模板中的使用:
    {extend name="public/base"}
    {block name="body"}
    {__block__} //可以把父模板中的内容也显示
    <span>我是子模板页面内容</span>
    {/block}

    注意,block标签内的内容才会显示,标签之外的不会显示。
    ===========================================================
    adminer是一个数据库管理工具。
    ========================================================
    Thinkphp有两种验证方式:
    (1)验证器,使用的是Validate类中的rule属性;
    (2)独立验证。
    ======================================================
    验证器:
    $rule = [
    'name|姓名'=>[
    'require',//或者写成'require'=>'require'
    'min'=>5,
    'max'=>20
    ],
    'email|邮箱'=>[
    'require',
    'email',
    ],
    'pass|密码'=>[
    'require',
    'min'=>3,
    'max'=>12,
    'alphaNum',//字母和数字
    ],
    'tel|手机号'=>[
    'require',
    'mobile'
    ]
    ]
    if(!$validate->check($Data,$rule)){
    return $validate->getError();
    }
    验证器就是完成框架的thinkValidate类中的
    属性protected $rule=[]的初始化。
    验证器可以放在application下的任何一个控制器可以
    访问到的位置。
    ==========================================================
    独立验证:
    使用的是验证器类thinkValidate中的rule()方法;
    rule()方法实际就是完成给当前类的protected $rule=[]的初始化。
    Validate::rule($rule);
    if(!Validate::check($data)){
    return Validate::getError();
    }


    ========================================================
    独立模块配置:
    (1)在config目录下,新建一个和模块名一样的目录,放配置文件;
    (2)在application目录下的具体模块下,放配置文件。
    =======================================================
    .htaccess文件要放在应用入口文件的同级目录下,
    所以tp5就是放在public目录下。

    .htaccess文件只针对apache服务器有效。
    =======================================================
    common是公共模块,默认配置的是禁止访问的模块,
    索引即使放控制器文件也不能被外部直接访问。
    ======================================================
    以前的控制器,5.0之前的,需要继承Controller,现在的不是必须的。
    ============================================================
    tp5.1版本默认采用多模块架构,也支持单一模块设计,即所有的模块
    的命名空间均以app作为根命名空间。可通过环境变量更改。
    =======================================================
    _initialize并非php类中的函数,
    它是由ThinkController.class.php实现的一个构造函数方法.
    在实例化父类的Controller后,如果子类中存在_initialize方法时,则执行。
    此时_initialize相当于子类的构造函数。
    ======================================================
    Tp5.1的默认访问不存在时,访问的是Error控制器。
    =================================================
    使用trait,可以实现多继承,用use关键字。
    =================================================
    分层控制器:
    在控制器下再建控制器目录,
    示例:
    模块/controller/controller1/Index.php;
    模块/controller/controller2/Index.php;
    访问方法:
    index/controller1.index.php
    index/controller2.index.php
    ================================================
    怎样把一个对象传入一个方法中呢?
    使用依赖注入。
    示例:
    public function index(thinkRequest $request){
    $request->module();//当前模块名
    $request->controller();//当前控制器名
    $request->action();//当前方法名
    $request->file();//获取$_FILES
    }
    ==================================================
    tp5.1框架默认没有设置任何全局过滤规则,
    可以在应用配置文件中设置全局的过滤规则:
    // 默认全局过滤方法 用逗号分隔多个
    'default_filter' => 'htmlspecialchars',

    也可以在获取变量的时候添加过滤方法,例如:
    Request::get('name','','htmlspecialchars'); // 获取get变量 并用htmlspecialchars函数过滤
    Request::param('username','','strip_tags'); // 获取param变量 并用strip_tags函数过滤
    Request::post('name','','orgFilter::safeHtml'); // 获取post变量 并用orgFilter类的safeHtml方法过滤

    可以支持传入多个过滤规则,例如:
    Request::param('username','','strip_tags,strtolower'); // 获取param变量 并依次调用strip_tags、strtolower函数过滤

    // 获取get变量 并且不进行任何过滤 即使设置了全局过滤
    Request::get('name', '', null);

    // 只获取当前请求的id和name变量,避免额外变量影响数据处理和写入。
    Request::only('id,name');

    // 排除id和name变量
    Request::except('id,name');

    //支持对变量使用修饰符功能
    Request::get('id/d');//强制转换为整型类型
    ================================================
    单词:
    trait 特点,特性;少许
    Closure 闭合,闭包
    ===============================================
    参数绑定:
    一种是按照名称:
    一种是按照顺序。
    ===============================================

  • 相关阅读:
    (转)oracle 11g安装后用户名忘记怎么办
    svn
    (转)ublox公司AGPS解决方案简介
    转(Google 全国 地图 纠偏数据 偏移数据 火星坐标修正 方案 )
    (转)真实经纬度的最简单获得方法
    (转)64bit上安装32位oracle 10 g出现错误:无法定位承诺工序输入点 getprocessimagifilenamew 于动态链接库PSAPI.DLL
    转】PPT带备注演示(只有讲解者看到备注)[转载]
    iphone应用程序结构
    ObjC 初识
    并行编程(PLINQ)学习笔记
  • 原文地址:https://www.cnblogs.com/gyfluck/p/10334920.html
Copyright © 2020-2023  润新知