养成了习惯,记录下学习TP5的笔记
这可能是最乱的笔记,也可能是只有自己能看懂的笔记,
没有捷径,只有动手,遇到问题首先查手册,是Tp5封装的基本都能解决,毕竟是小白
不过tp5和tp3截然不同,也是耗费了我不少脑细胞的,内存有限,所以线写入磁盘吧哈哈
下面开始我的表演:
入门安装
安装完毕后首先开启config.php中的debug方便调试
隐藏index.php文件 修改.htaccess文件,需要apache开启rewrite模块,配置文件中所有 AllowOverride 设置为 All
参数获取
访问www.test.com/admin/index/index/aa/11/bb/22/cc/33/name/lisa
在方法中print_r($this->request->param()); //打印路由中所有参数
数据表前缀的设置
配置文件中prefix = 'tp_'];
数据库的简单操作、
$data = Db::name('user') -> find(); //可用select();
$this->assign('data',$data); //前台使用数据举例 {$data} {$data['name']}
return $this->fetch(); //return view();使用助手函数
路由和URL
访问ADMIN/INDEX/INDEX 转化
控制器转化为Index 首页字母为大写 如果是HelloWorld控制器就要用hello_world访问
方法名和模块名都转化为小写
配置文件
'URL_convert' => true;转化参数配置,关了以后就不转化了,
TP5中 index?m=home&c=index&a=index 访问形式不在支持
model命名
model名字需要和表名相同
路由转化
修改route.php文件
url伪静态后缀设置: 'url_html_suffix' => 'html';
'hello/[:name]' => ['index/index/hello',['method'=>'get','ext'=>'html']];
接下来
1、访问www.test.com/hello/zhangsan.html(扩展为html)的时候,
即可访问到index/index/hello,而且可以通过get方式获取到参数name值zhangsan;
2、访问www.test.com/hello.html(扩展为html)的时候,
即可访问到index/index/hello,;即name参数可带可不带
修改route.php文件
'hello/:name' => ['index/index/hello',['method'=>'get','ext'=>'html']];
注意name不带[]这时候方式时就必须带参数了用上边第二种方法就不行了
多个参数的情况:
'today/:year/:mouth' => ['index/index/today',['mouth' => 'get'],['year' => '\d{4}','mouth'=>'\d{2}']];
在today方法中有year mouth、两个参数 用www.test.com/today/2017/10.html
url生成:
url::build('admin/hello','a=1&b=2');
助手函数:
url('admin/hello','a=1&b=2');
url('admin/hello',['a'=>1,'b'=>2]);
url('admin/HelloWorld/index'); 会自动切换成hello_world
请求响应
Request类
继承Controller类就已经实例化过此类,不继承可用Request::instance();实例化
$this -> request ->url(); 同 $request -> url(); 获取url不含域名;
获取参数
$request -> param(); 获取所有参数
$request -> param('name'); 获取name值
也可用input助手函数
input();获取所有 ; input('name');获取name;
$this -> request ->bind('username','张三'); 动态绑定参数
$this -> request -> username; 获取绑定的name值
$request ->param('en_name','jake','strtolower');把url传过来的值转化为小写,不传则为默认值jake
参数
$request -> get(); get('name');
$request -> post(); post('name');
$request -> cookie('name');
$request -> file('image');
$request ->method();
$request ->ip()
$request ->isAjax()?'是':'否';
$request ->domain();
$request ->baseFile();入口文件
$request ->url(true);设为true含域名完整url
$request ->query();url的参数信息
$request ->baseUrl();不含域名不含参数
$request ->pathinfo();返回url中pathinfo信息
$request ->ext();返回后缀
$request ->module();模块名
$request ->controller();控制器名
$request ->action();方法名