ThinkPHP 5.1 基础知识

mac2022-06-30  23

==========================================//模板中的默认标题{$title|default='默认标题'}==========================================模板中的循环{volist name='data' id='list'}<span>{$list.id}</span>{/volist}===========================================模板中的静态文件,放在/public/static/下。模板中引用静态文件:<script src='/static/js/jquery.js'></script>============================================分页:think\db\Query.php里有个paginate方法,实现sql的分页;$data = \app\model\Student::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();}验证器就是完成框架的think\Validate类中的属性protected $rule=[]的初始化。验证器可以放在application下的任何一个控制器可以访问到的位置。==========================================================独立验证:使用的是验证器类think\Validate中的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类中的函数,它是由Think\Controller.class.php实现的一个构造函数方法.在实例化父类的Controller后,如果子类中存在_initialize方法时,则执行。 此时_initialize相当于子类的构造函数。======================================================Tp5.1的默认访问不存在时,访问的是Error控制器。=================================================使用trait,可以实现多继承,用use关键字。=================================================分层控制器:在控制器下再建控制器目录,示例:模块/controller/controller1/Index.php;模块/controller/controller2/Index.php;访问方法:index/controller1.index.phpindex/controller2.index.php================================================怎样把一个对象传入一个方法中呢?使用依赖注入。示例:public function index(think\Request $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','','org\Filter::safeHtml'); // 获取post变量 并用org\Filter类的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 闭合,闭包===============================================参数绑定:一种是按照名称:一种是按照顺序。===============================================

转载于:https://www.cnblogs.com/gyfluck/p/10334920.html

最新回复(0)