• thinkphp学习总结


    thinkphp3.2 手册目录:http://www.kancloud.cn/manual/thinkphp/1678

    http://www.aichengxu.com/view/39961

    一、页面跳转

    1.URL模式用来定向请求到模块、控制器和操作,如pathInfo模式:http://localhost/index.php/home/user/login/var/value/ 方法不存在,则为模版

    2.页面跳转$this->success(“新增成功”,’/user/index’);

    $this->success("添加成功",U('office/index'));跳转方法

    3.页面重定向$this->redirect("office/index");跳转方法

    4.显示模版$this->display("/office/officeJudge");

    $this->display('Member:read'); 通常默认的视图目录是View

    5.ajax的返回$this->ajaxReturn(eval("return $xsq;"));

    U方法:默认当前模块,,U('office/index')为office控制器的index方法

    二、变量获取

    1.后台获取,推荐用I方法,注意怎么提交怎么取,取值为方括号

    $id = $_GET['id']; 相当于$id = I('get.id,””)不存在返回“”

    2.前台显示

    $this->assign("condition",$condition);

    直接$取值value="{$condition}"

    数组<volist name="office_list" id="vo">

           <tr><td>{$num++}</td>

               <td>{$vo.name}</td>

               <td><a href="__CONTROLLER__/deleteOfficeJudge?id={$vo.id}" onclick="del()">删除</a></td></tr></volist>

    三、配置文件

    $DB_CONFIG = array(

        'DB_TYPE'   => 'mysql', // 数据库类型

        'DB_HOST'   => '127.0.0.1', // 服务器地址

        'DB_NAME'   => 'evalute', // 数据库名

        'DB_USER'   => 'root', // 用户名

        'DB_PWD'    => '', // 密码

        'DB_PORT'   => 3306, // 端口

        'DB_PREFIX' => 'think_', // 数据库表前缀

        'DB_CHARSET'=> 'utf8', // 字符集

        'DB_DEBUG'  =>  TRUE, // 数据库调试模式 开启后可以记录SQL日志

    );

    $URL_CONFIG = array(

        'URL_MODULE' => 0,

        'DEFAULT_FILTER'   => 'htmlspecialchars,trim',

    );

    return array_merge($DB_CONFIG,$URL_CONFIG);

    四、CURD操作

    实例化:D会去实例化对应Model,有验证用它。M仅对数据库增删查改。

    数据增改:自动验证,令牌验证(防重复提交)和自动完成在create方法完成。$User->create($data);可以先在$User赋值,也可以在$data数组赋值。$User->add();写入数据库,因为create过所以add不传数据。也可不创建直接add($data)。save类似。

    数据读取:连贯操作;查询条件尽量使用数组方式,这是更为安全的方式;

    $Model->where("id=%d and username='%s' ",array($id,$username))->select();

    数据删除:$Form->delete(5);表示删除主键为5的

    页面的删除提示

    function del(){

        if(!confirm("确认要删除?")){

           window.event.returnValue = false;

        }

    }

    五、视图模型

    namespace HomeModel;

    use ThinkModelViewModel;

    class ContentModel extends ViewModel{

        public $viewFields = array(

         'paper'=>array('name'), 'pcontent'=>array('id','qOrder','paperId','itemId','_on'=>'paper.id=pcontent.paperId'),

         'question'=>array('subName','option'=>'radio','startDesc','endDesc','_on'=>'pcontent.qId=question.id'),

         'type'=>array('name'=>'type','_on'=>'type.id=question.type'),

         'item'=>array('name'=>'itemName','_on'=>'pcontent.itemId=item.id'),

       );

    }

    六、模版替换-特殊字符串

    __APP__: 会替换成当前应用的URL地址 (不含域名)

    __MODULE__:会替换成当前模块的URL地址 (不含域名)

    __CONTROLLER__(__或者__URL__ 兼容考虑): 会替换成当前控制器的URL地址(不含域名)

    __ACTION__:会替换成当前操作的URL地址 (不含域名)

    __SELF__: 会替换成当前的页面URL

    __PUBLIC__:会被替换成当前网站的公共目录 通常是 /Public/

    七、文件上传

    <input type="file" name="photo"/>

    <img style='margin:10px;border:1px solid black;' src="__ROOT__/Uploads/{$office_info.photo}" />

    $config = array(

          'maxSize'    =>    3145728,

          'rootPath'   =>    './Uploads/',

          'savePath'   =>    '',

          'saveName'   =>    array('uniqid',''),

          'exts'       =>    array('jpg', 'gif', 'png', 'jpeg'),

          'autoSub'    =>    true,

          'subName'    =>    array('date','Ymd'),

    );

    $upload = new ThinkUpload($config);// 实例化上传类

    $info   =   $upload->upload($_FILES['photo']);

    if(!$info) {// 上传错误提示错误信息

           $this->error($upload->getError());

    }else{// 上传成功 获取上传文件信息

            echo $info['savepath'].$info['savename'];

    }

    八、验证码

    <img src='__MODULE__/user/verify' onclick="show(this)" >

    public function verify(){

        $Verify = new ThinkVerify;

        $Verify->useImgBg = true;

        ob_clean();//丢弃输出缓冲区中的内容

        $Verify->entry();

    }

    九、引入菜单文件

    <include file="Public/header.html"/>

    十、修改时-单选框,复选框

    单选 用eq

    <select name="type" value="{$question_info.type}">

        <volist name="type_list" id="t">{$t.id}

           <eq name="t.id" value="$question_info.type">

               <option value="{$t.id}"  selected="selected">{$t.name}</option>

               <else/>

                  <option value="{$t.id}">{$t.name}</option>

           </eq>

        </volist>

    </select>

    复选框 用in

    <volist name="radio_list" id="r">

        <in name="r.id" value="$question_info.option">

           <input name="radio[]" type="checkbox" value="{$r.id}" checked="checked">{$r.opname}

           <else/>

           <input name="radio[]" type="checkbox" value="{$r.id}">{$r.opname}

        </in>

    </volist>

    复选框提交后值的处理

    foreach ($_POST['radio'] as $key => $value) {

           $option = $option.$value.",";

    }

    $data['option'] = substr($option,0,strlen($option)-1);

    分割字符串

    if($question_info['option'] != null){

    $question_info['option'] = explode(",",$question_info['option']);}

    十一、验证用户名是否已存在ajax+jquery

    返回值echo json_encode($user_list);

    function checkName(){

           $.ajax({

               type:"POST",

               url: "__CONTROLLER__/testUser",

               data:"uname="+$('#uname').val(),

               success: function(msg){

                  // for(var mi in eval('('+msg+')')){

                  // alert(mi+"-->"+eval('('+msg+')')[mi]);

                  // }

                    if(eval('('+msg+')') != null){

                      $('#notice').html( "已存在");

                    }else{

                      $('#notice').html( "可以使用");

                    }

               }

           });

        }

    十二、分页

    $count = $type->count();

    $Page = new ThinkPage($count,2);

    $Page -> setConfig('header','共%TOTAL_ROW%条');

    $Page -> setConfig('first','首页');

    // $Page -> setConfig('last','共%TOTAL_PAGE%页');

    $Page -> setConfig('prev','上一页');

    $Page -> setConfig('next','下一页');

    // $Page -> setConfig('link','indexpagenumb');//pagenumb 会替换成页码

    $Page -> setConfig('theme','%HEADER% %FIRST% %UP_PAGE% %LINK_PAGE% %DOWN_PAGE% %END%');

    $show = $Page->show();

    $type_list = $type->order('name desc')->limit($Page->firstRow.','.$Page->listRows)->select();

    $this->assign("type_list",$type_list);

    $num = $Page->firstRow + 1;//序号

    $this->assign("num",$num);

    $this->assign("page",$show);

    <tr><td colspan="3"><div>{$page}</div></td></tr>

    分页带条件,则条件查询的form表单采用get方式提交

    十三、自定义菜单

    1.js中的数组,注意Array的A大写

    var menus = new Array();

    menus[0] = {"id":1,"name":"体育","ismenu":"1"}

    menus[1] = {"id":2,"name":"音乐","ismenu":"1"}

    2.js取发生事件的控件的信息

    onclick="del(this)"

    del中var myid = obj.id;

    3.jquery取控件的值

    $("#xsq").attr("value",value);

    $("#xsq").val();

    十四、调试

    F12 看元素,看网络传输

    $this->show(“2333”);

    var_dump($a); php写法,在thinkphp中dump($a)效果相同

  • 相关阅读:
    mac下使用brew安装mongodb
    从零构建vue+webpack (一)
    常用软件集合(2018/08/22)
    solr集群安装部署
    zookeeper集群部署
    redis集群部署
    linux 安装jdk
    zTab layui多标签页组件
    spring boot集成swagger2
    SSH客户端,FinalShell服务器管理,远程桌面加速软件,支持Windows,Mac OS X,Linux,版本2.6.3.1
  • 原文地址:https://www.cnblogs.com/froid/p/5481066.html
Copyright © 2020-2023  润新知