tp5怎么tp5 redis实例化化模板

TP5 在模板中写PHP语句
{php}echo 'Hello,world!';{/php}
$title=explode('|',$vo);
$t_en=$title[0];
$t_text=$title[1];
最终要的效果:
&div class="layui-fluid"&
&div class="layui-form layui-form-pane" action="" id="form" lay-filter="chkbox"&
{volist name="list_title" id="vo"}
$title=explode('|',$vo);
$t_en=$title[0];
$t_text=$title[1];
&input type="checkbox" name="{$t_en}" title="{$t_text}" value="guishu" lay-skin="primary" id="guishu" lay-filter="guishu"
官方文档:https://www.kancloud.cn/manual/thinkphp5/125022
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!tp5框架知识点
tp5框架知识点
项目包含的关键点,后台,前台。
入口文件。
通用配置文件。
数据库配置文件。
共有文件,css,images,js。
控制器,模型,视图。
共有函数。
属性,方法。
命名规范。
命名空间。
自动加载。
项目包含的关键点,后台,前台。
入口文件。
通用配置文件。
数据库配置文件。
共有文件,css,images,js。
控制器,模型,视图。
共有函数。
属性,方法。
命名规范。
命名空间。
自动加载。
数据库操作。
查询一个数据使用:
Db::table('think_user')-&where('id',1)-&find();
find 方法查询结果不存在,返回 null
查询数据集使用:
Db::table('think_user')-&where('status',1)-&select();
select 方法查询结果不存在,返回空数组
如果设置了数据表前缀参数的话,可以使用
Db::name('user')-&where('id',1)-&find();
Db::name('user')-&where('status',1)-&select();
如果你的数据表没有使用表前缀功能,那么name和table方法的一样的效果。
在find和select方法之前可以使用所有的链式操作方法。
默认情况下,find和select方法返回的都是数组。
系统提供了一个db助手函数,可以更方便的查询:
db('user')-&where('id',1)-&find()
db('user')-&where('status',1)-&select()
添加一条数据
使用 Db 类的 insert 方法向数据库提交数据
$data = ['foo' =& 'bar', 'bar' =& 'foo'];
Db::table('think_user')-&insert($data);
如果你在database.php配置文件中配置了数据库前缀(prefix),那么可以直接使用 Db 类的 name 方法提交数据
Db::name('user')-&insert($data);
insert 方法添加数据成功返回添加成功的条数,insert 正常情况返回 1
添加数据后如果需要返回新增数据的自增主键,可以使用getLastInsID方法:
Db::name('user')-&insert($data);
$userId = Db::name('user')-&getLastInsID();
或者直接使用insertGetId方法新增数据并返回主键值:
Db::name('user')-&insertGetId($data);
insertGetId 方法添加数据成功返回添加数据的自增主键
添加多条数据
添加多条数据直接向 Db 类的 insertAll 方法传入需要添加的数据即可
['foo' =& 'bar', 'bar' =& 'foo'],
['foo' =& 'bar1', 'bar' =& 'foo1'],
['foo' =& 'bar2', 'bar' =& 'foo2']
Db::name('user')-&insertAll($data);
insertAll 方法添加数据成功返回添加成功的条数
db('user')-&insert($data);
db('user')-&insertAll($list);
更新数据表中的数据
Db::table('think_user')
-&where('id', 1)
-&update(['name' =& 'thinkphp']);
如果数据中包含主键,可以直接使用:
Db::table('think_user')
-&update(['name' =& 'thinkphp','id'=&1]);
update 方法返回影响数据的条数,没修改任何数据返回 0
如果要更新的数据需要使用SQL函数或者其它字段,可以使用下面的方式:
Db::table('think_user')
-&where('id', 1)
-&update([
'login_time'
=& ['exp','now()'],
'login_times' =& ['exp','login_times+1'],
更新某个字段的值:
Db::table('think_user')
-&where('id',1)
-&setField('name', 'thinkphp');
setField 方法返回影响数据的条数,没修改任何数据字段返回 0
自增或自减一个字段的值
setInc/setDec 如不加第二个参数,默认值为1
Db::table('think_user')
-&where('id', 1)
-&setInc('score');
Db::table('think_user')
-&where('id', 1)
-&setInc('score', 5);
Db::table('think_user')
-&where('id', 1)
-&setDec('score');
Db::table('think_user')
-&where('id', 1)
-&setDec('score', 5);
setInc/setDec支持延时更新,如果需要延时更新则传入第三个参数
下例中延时10秒,给score字段增加1
Db::table('think_user')-&where('id', 1)-&setInc('score', 1, 10);
setInc/setDec 方法返回影响数据的条数
db('user')-&where('id',1)-&update(['name' =& 'thinkphp']);
db('user')-&where('id',1)-&setField('name','thinkphp');
db('user')-&where('id', 1)-&setInc('score');
db('user')-&where('id', 1)-&setDec('score');
删除数据表中的数据
Db::table('think_user')-&delete(1);
Db::table('think_user')-&delete([1,2,3]);
Db::table('think_user')-&where('id',1)-&delete();
Db::table('think_user')-&where('id','&',10)-&delete();
delete 方法返回影响数据的条数,没有删除返回 0
db('user')-&delete(1);
db('user')-&where('id',1)-&delete();
错误提示。
API接口数据处理。
路由处理。
缓存机制。
模块架构与配置。
类库导入。
系统常量。
配置获取,配置设置,动态配置。
渲染输出。
namespace app\index\controller;
class Index
public function hello()
return 'hello,world!';
public function json()
return json_encode($data);
public function read()
return view();
输出转换。
namespace app\index\controller;
class Index
public function hello()
return 'hello,world!';
public function data()
return ['name'=&'thinkphp','status'=&1];
// 默认输出类型
'default_return_type'
=& 'json',
控制器初始化。
namespace app\index\controller;
use think\Controller;
class Index extends Controller
public function _initialize()
echo 'init&br/&';
public function hello()
return 'hello';
public function data()
return 'data';
页面跳转。
在应用开发中,经常会遇到一些带有提示信息的跳转页面,例如操作成功或者操作错误页面,并且自动跳转到另外一个目标页面。系统的\think\Controller类内置了两个跳转方法success和error,用于页面跳转提示。
使用方法很简单,举例如下:
namespace app\index\controller;
use think\Controller;
use app\index\model\User;
class Index extends Controller
public function index()
$User = new User;
$result = $User-&save($data);
if($result){
$this-&success('新增成功', 'User/list');
$this-&error('新增失败');
跳转地址是可选的,success方法的默认跳转地址是$_SERVER["HTTP_REFERER"],error方法的默认跳转地址是javascript:history.back(-1);。
默认的等待时间都是3秒
success和error方法都可以对应的模板,默认的设置是两个方法对应的模板都是:
THINK_PATH . 'tpl/dispatch_jump.tpl'
我们可以改变默认的模板:
//默认错误跳转对应的模板文件
'dispatch_error_tmpl' =& APP_PATH . 'tpl/dispatch_jump.tpl',
//默认成功跳转对应的模板文件
'dispatch_success_tmpl' =& APP_PATH . 'tpl/dispatch_jump.tpl',
空操作是指系统在找不到指定的操作方法的时候,会定位到空操作(_empty)方法来执行,利用这个机制,我们可以实现错误页面和一些URL的优化。
例如,下面我们用空操作功能来实现一个城市切换的功能。
我们只需要给City控制器类定义一个_empty (空操作)方法:
namespace app\index\controller;
class City
public function _empty($name)
return $this-&showCity($name);
protected function showCity($name)
return '当前城市' . $name;
接下来,我们就可以在浏览器里面输入
http://serverName/index/city/beijing/
http://serverName/index/city/shanghai/
http://serverName/index/city/shenzhen/
由于City并没有定义beijing、shanghai或者shenzhen操作方法,因此系统会定位到空操作方法 _empty中去解析,_empty方法的参数就是当前URL里面的操作名,因此会看到依次输出的结果是:
当前城市:beijing
当前城市:shanghai
当前城市:shenzhen
空控制器的概念是指当系统找不到指定的控制器名称的时候,系统会尝试定位空控制器(Error),利用这个机制我们可以用来定制错误页面和进行URL的优化。
现在我们把前面的需求进一步,把URL由原来的
这样更加简单的方式,如果按照传统的模式,我们必须给每个城市定义一个控制器类,然后在每个控制器类的index方法里面进行处理。 可是如果使用空控制器功能,这个问题就可以迎刃而解了。
我们可以给项目定义一个Error控制器类
namespace app\index\controller;
use think\Request;
class Error
public function index(Request $request)
$cityName = $request-&controller();
return $this-&city($cityName);
protected function city($name)
return '当前城市' . $
接下来,我们就可以在浏览器里面输入
由于系统并不存在beijing、shanghai或者shenzhen控制器,因此会定位到空控制器(Error)去执行,会看到依次输出的结果是:
当前城市:beijing
当前城市:shanghai
当前城市:shenzhen
空控制器和空操作还可以同时使用,用以完成更加复杂的操作。
空控制器Error是可以定义的
'empty_controller'
=& 'MyError',
当找不到控制器的时候,就会定位到MyError控制器类进行操作。
数据请求。
设置/获取 模块/控制器/操作名称
$request = Request::instance();
echo "当前模块名称是" . $request-&module();
echo "当前控制器名称是" . $request-&controller();
echo "当前操作名称是" . $request-&action();
获取请求参数
$request = Request::instance();
echo '请求方法:' . $request-&method() . '&br/&';
echo '资源类型:' . $request-&type() . '&br/&';
echo '访问ip地址:' . $request-&ip() . '&br/&';
echo '是否AJax请求:' . var_export($request-&isAjax(), true) . '&br/&';
echo '请求参数:';
dump($request-&param());
echo '请求参数:仅包含name';
dump($request-&only(['name']));
echo '请求参数:排除name';
dump($request-&except(['name']));
获取路由和调度信息
$request = Request::instance();
echo '路由信息:';
dump($request-&route());
echo '调度信息:';
dump($request-&dispatch());
变量处理。
可以通过Request对象完成全局输入变量的检测、获取和安全过滤,支持包括$_GET、$_POST、$_REQUEST、$_SERVER、$_SESSION、$_COOKIE、$_ENV等系统变量,以及文件上传信息。
检测变量是否设置
可以使用has方法来检测一个变量参数是否设置,如下:
Request::instance()-&has('id','get');
Request::instance()-&has('name','post');
或者使用助手函数
input('?get.id');
input('?post.name');
变量检测可以支持所有支持的系统变量。
获取GET变量
Request::instance()-&get('id');
Request::instance()-&get('name');
Request::instance()-&get();
Request::instance()-&get(false);
或者使用内置的助手函数input方法实现相同的功能:
input('get.id')
input('get.name')
input('get.')
获取请求类型
在很多情况下面,我们需要判断当前操作的请求类型是GET、POST、PUT、DELETE或者HEAD,一方面可以针对请求类型作出不同的逻辑处理,另外一方面有些情况下面需要验证安全性,过滤不安全的请求。
ThinkPHP5.0 取消了用于判断请求类型的系统常量(如IS_GET,IS_POST等),统一采用 think\Request类 处理请求类型。
if (Request::instance()-&isGet()) echo "当前为 GET 请求";
if (Request::instance()-&isPost()) echo "当前为 POST 请求";
if (Request::instance()-&isPut()) echo "当前为 PUT 请求";
if (Request::instance()-&isDelete()) echo "当前为 DELETE 请求";
if (Request::instance()-&isAjax()) echo "当前为 Ajax 请求";
if (Request::instance()-&isPjax()) echo "当前为 Pjax 请求";
if (Request::instance()-&isMobile()) echo "当前为手机访问";
if (Request::instance()-&isHead()) echo "当前为 HEAD 请求";
if (Request::instance()-&isPatch()) echo "当前为 PATCH 请求";
if (Request::instance()-&isOptions()) echo "当前为 OPTIONS 请求";
if (Request::instance()-&isCli()) echo "当前为 cli";
if (Request::instance()-&isCgi()) echo "当前为 cgi";
if (request()-&isGet()) echo "当前为 GET 请求";
分页处理。
模板文件定义
每个模块的模板文件是独立的,为了对模板文件更加有效的管理,ThinkPHP对模板文件进行目录划分,默认的模板文件定义规则是:
视图目录/控制器名(小写)/操作名(小写)+模板后缀
默认的视图目录是模块的view目录,框架的默认视图文件后缀是.html。
模板渲染规则
模板渲染使用\think\View类的fetch方法,渲染规则为:
模板文件目录默认位于模块的view目录下面,视图类的fetch方法中的模板文件的定位规则如下:
如果调用没有任何参数的fetch方法:
return $view-&fetch();
则按照系统的默认规则定位模板文件到:
[模板文件目录]/当前控制器名(小写+下划线)/当前操作名(小写).html
如果(指定操作)调用:
return $view-&fetch('add');
则定位模板文件为:
[模板文件目录]/当前控制器名(小写+下划线)/add.html
如果调用控制器的某个模板文件使用:
return $view-&fetch('user/add');
则定位模板文件为:
[模板文件目录]/user/add.html
跨模块调用模板
return $view-&fetch('admin@user/add');
全路径模板调用:
return $view-&fetch(APP_PATH.request()-&module().'/view/public/header.html');
模板使用函数。
模板使用默认值。
模板使用运算符。
模板内置标签,循环/比较/条件判断/嵌套/原生PHP。
表单验证。
本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/7479880.html,如需转载请自行联系原作者
用云栖社区APP,舒服~
【云栖快讯】云栖社区技术交流群汇总,阿里巴巴技术专家及云栖社区专家等你加入互动,老铁,了解一下?&&
文章4505篇
用配置管理(Application Configuration Management,简称 ...
云数据库PPAS版,是阿里云与EnterpriseDB公司合作基于PostgreSQL高度兼...
PostgreSQL被业界誉为“最先进的开源数据库”,面向企业复杂SQL处理的OLTP在线事...
为您提供简单高效、处理能力可弹性伸缩的计算服务,帮助您快速构建更稳定、安全的应用,提升运维效...
阿里中间件云大使TP5与TP3.2的可以通用的方法
模型实例化
TP5取消了自动实例化模型的M方法,转而使用了新的实例化模型方法。没有自动实例化则必须自己新建模型类,然后自己实例化,这就有点类似D方法。这里与D方法的功能类似的有一个model的方法,功能上完全可以替换使用
U方法是TP中的生成路由的内置方法,现在这个方法可以完全使用url方法替换
TP5中取消了IS_GET和IS_POST方法
如果想继续使用可以在项目中自定义一下,如下:
define('IS_GET',Request::instance()-&isGet());
define('IS_POST',
Request::instance()-&isPost());
原来的TP的I方法
之前的TP有个I方法用来接收请求参数,目前可以使用input方法替代
需要注意的是新增方法
现在的单条新增方法改为了save方法,这个是以前的更新方法,而且需要注意的是更新的方式也有区别。新增可以直接用save,而更新则需要加isUpdate(true)
model("")-&isUpdate(true)-&save($data);
TP5和原来版本TP差距最大的功能性的地方在返回,现在几乎所有的数据库查询都会返回对象
$menuurl-&find($menu_id);
$this-&where($condition)-&order($order)-&select();
C方法被config方法替换
数据库配置单独在database.php中,想获取参数使用
config('database.prefix')
页面中目前有自定义常量的方法,使用配置的方法类似之前版本
如果需要全局替换的话,可以直接在配置文件中添加:
'view_replace_str'
'__PUBLIC__'=&'/public/',
'__ROOT__' =& '/',
或者直接使用常量配置
{$Think.config.PUBLIC}
默认的引擎标签可修改,也就是之前的&&这种可以继续用
'tpl_begin'
'taglib_begin' =& '{',
'taglib_end'
目前基本的就是以上
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!tp5rc4 怎么实例化model类_百度知道
tp5rc4 怎么实例化model类
我有更好的答案
自己写的model,需要D(&类名称&)不包括model,如果实例化数据库操作使用M(&数据库&)
采纳率:96%
来自团队:
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 tp5 实例化 的文章

 

随机推荐