赞
踩
目录
关闭路由,完全使用默认的PATH_INFO方式的URL,即http://服务器名/index.php/模块名/控制器名/方法名/name/value
首先在application/config.php中 将url_route_on 修改为false
打开nginx.conf配置文件
在原来的路径后面加上\index\index\index发现依然可以正常访问:
即localhost:888/tp5.0.11/public/index.php其实是localhost:888/tp5.0.11/public/index.php/index/index/index的缩写形式,如果index.php后面什么都不写,默认访问的就是index模块下的controller中的index.php的index方法,这个默认设置在application/config.php中可以看到:
如何使用PATH_INFO模式:
在application/index/controller/下创建一个User.php(首字母一定大写)
- <?php
- namespace app\index\controller;
-
- class User{
- public function hello(){
- return "hello User";
- }
- }
注意:一定要写命名空间,然后照着葫芦(Index.php)画瓢子(User.php)
然后在application/下创建一个admin目录,在admin下创建一个controller目录,在controller下创建一个Index.php(首字母大写)
内容如下:
- <?php
- namespace app\admin\controller;
- class Index{
- function say(){
- return "hello admin";
- }
- }
访问:
注意点:
1.命名空间一定要写上
2.controller下的文件名都是首字母大写,且文件中类名和文件名要一致
开启路由,并设置:必须定义路由才能访问
使用路由:
(1)设置路由规则:application/route.php
添加红框内的内容:(路由的注册)
访问:
如果say函数有参数怎么办呢?
修改index.php文件:
注意:再开头加上use think\Request;
也可以使用request()->param(参数名)来接受
修改route.php
访问:
另一种接收值的方式
- <?php
- namespace app\admin\controller;
- class Index{
- public function say($name){
- dump($name);
- return "hello admin";
- }
- }
firefox插件:
windows:httpRequester
Mac:ApiPost
通用:hackbar
1.route.php中配置get请求规则和post请求规则:
2.在appplication/controller/index.php中添加对应的函数:
3.get访问:
post访问:
3.在route.php中配置put请求和delete请求的规则:
- Route::put('admin','admin/index/index_put');
- Route::put('test/:id','admin/indexController/update');
- Route::delete('admin','admin/index/index_delete');
- Route::delete('test/:id','admin/indexController/delete')
PS: put请求既可以在url中代参数,也可以在请求的body中带参数。
url中的参数必须在对应控制器的形参中进行接受,例如 public function updata($id)
body中的参数,可以通过 request()->put() 、 intpu('put.') 等方法来接收
然后在application/controller/index.php中增加对应的方法:
- public function index_put(){
- dump("this is put");
- }
- public function index_delete(){
- dump("this is delete");
- }
put请求访问:
delete请求访问:
如何匹配所有类型的请求呢?
1.在route.php中增加一条any路由规则:
Route::any('anyRequest','admin/index/index_any');
2.在index.php中增加对应的方法:
- public function index_any(){
- dump("this is any");
- }
3.以各种形式访问:
4.现在any能匹配所有类型的请求,我们可以限制any可以匹配的请求类型,例如:让any只匹配put请求
Route::any('anyRequest','admin/index/index_any',['method'=>'put']);
如何对get传参进行限制呢?
route.php中这样写规则:
Route::get('admin/:name','admin/index/index_get','',['name'=>'^\d{2}$']);
这样只有get传参为两位数字的时候才能正常访问。
并且在路由规则中,我们还可以实现一种伪静态:
Route::get('admin/:name','admin/index/index_get',['ext'=>'html'],['name'=>'^\d+$']);
这样就限制了在参数之后必须加上.html才能正常访问
如果该项不设置(设置为''),加上html后缀和不加html后缀都可以正常访问,因为配置文件config中是这样默认设置的:
- Route::put('admin/put','admin/index/index_put');
- Route::delete('admin/delete','admin/index/index_delete');
- Route::post('admin/post','admin/index/index_post');
- Route::get('admin/get/:name','admin/index/index_get');
等价写法:
- Route::group('admin',function(){
- Route::put('put','admin/index/index_put');
- Route::delete('delete','admin/index/index_delete');
- Route::post('post','admin/index/index_post');
- Route::get('get/:name','admin/index/index_get');
- });
这样就叫路由分组,例如可以通过路由分组,将网站前台和后台的路由规则分开,前后home,后台admin
- Route::get('welcome/:name',function($name){
- return 'welcome study tp5'.$name;
- });
当你所有的路由规则都匹配不上的时候,就会匹配这则路由:
Route::miss('admin/index/miss');
在admin/controller/下创建一个Article.php:
- <?php
- namespace app\admin\controller;
- class Article{
- public function index(){
- dump('this is index');
- }
- public function create(){
- dump('this is create');
- }
- public function save(){
- dump('this is save');
- }
- public function read(){
- dump('this is read');
- }
- public function edit(){
- dump('this is edit');
- }
- public function update(){
- dump('this is update');
- }
- public function delete(){
- dump('this is delete');
- }
- }

在route.php中配置一条资源路由:
不用指定方法,指定到控制器名即可。
Route::resource('article','admin/article');
设置后会自动注册7个路由规则:
- Route::get('article','admin/article/index');
- Route::post('article','admin/article/save');
- //增
- Route::get('article/create','admin/article/create');
- //查
- Route::get('article/:id','admin/article/read');
- //改
- Route::get('article/:id/edit','admin/article/edit');
- Route::put('article/:id','admin/article/update');
- //删
- Route::delete('article/:id','admin/article/delete');
read函数通常用在 文章详情页 接口。可以通过 input('get.id') input('param.id') request()->get('id') 等方法来接收 传给id的值
普通模式 即pathInfo模式下,访问必须有模块/控制器/方法,如果之后还要加什么参数的话,url会很长
强制模式 即路由模式,可以简化url,并且还可以对参数进行过滤限制。
推荐用强制模式。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。