Laravel5.5仿ThinkPHP的pathinfo传参示例

互联网 20-3-28

PS:目前所能找到的方法,希望不会被大佬们鄙视...

1、我的nginx配置:

#test6 admin     server {         listen       80;         server_name  admin.test6.local;         root "d:/data/www/test6/public/admin";         index  index.html index.htm index.php;         error_page  404              /404.html;         location = /404.html {                 return 404 'Sorry, File not Found!';         }         error_page  500 502 503 504  /50x.html;         location = /50x.html {                 root   /usr/share/nginx/html; # windows dir         } location / {     try_files $uri $uri/ /index.php?$query_string; }                 location ~ /Uploads/.*\.php$ {                 deny all;         }         location ~ \.php/ {                 if ($request_uri ~ ^(.+\.php)(/.+?)($|\?)) { }                 fastcgi_pass 127.0.0.1:9000;                 include fastcgi_params;                 fastcgi_param SCRIPT_NAME     $1;                 fastcgi_param PATH_INFO       $2;                 fastcgi_param SCRIPT_FILENAME $document_root$1;         }         location ~ \.php$ {                 fastcgi_pass 127.0.0.1:9000;                 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;                 include fastcgi_params;         }         location ~ /\.ht {                 deny  all;         }    }

2、路由 /routes/admin.php

PS:目前用的方法是这样的

Route::get('/shop/goods_list', 'Shop\GoodsController@goods_list'); Route::get('/shop/goods_list/page/{page}/limit/{limit}', 'Shop\GoodsController@goods_list'); Route::get('/shop/goods_list/page/{page}/limit/{limit}/keyword/{keyword}', 'Shop\GoodsController@goods_list');

3、基类 \app\Http\Controllers\Admin\Publi\BaseController.php

PS:请别吐槽那个Publi,我也很无奈啊..

<?php   namespace App\Http\Controllers\Admin\Publi;   use Illuminate\Foundation\Bus\DispatchesJobs; use Illuminate\Routing\Controller; use Illuminate\Foundation\Validation\ValidatesRequests; use Illuminate\Foundation\Auth\Access\AuthorizesRequests; use Illuminate\Http\Request; class BaseController extends Controller {     use AuthorizesRequests, DispatchesJobs, ValidatesRequests;       //构造函数     public function __construct() {         $this->middleware(function ($request, $next) {             //未登录的处理             //$this->dosomething($request);             //仿TP用pathinfo传参             $path=$request->path();             $this->pathinfo=$this->path_to_array($request,$path);             return $next($request);         });     }       /*路径转数组      *输入路径,如:http://admin.test6.local/shop/goods_list/page/3      * 返回数组,如:$array['page']=3; $array['keyword']='somekeyword';      */     public function path_to_array(Request $request,$path=null){         $array=array();         if(strpos($path,'/')!==false){             $arr=explode('/',$path);             foreach($arr as $k=>$v){                 if($k>0&&($k%2==0)){                     $array[$v]=$arr[$k+1];                 }             }         }         if(count($array)>0){             return $array;         }     }   }

3、控制器 \app\Http\Controllers\Admin\Shop\GoodsController.php

namespace App\Http\Controllers\Admin\Shop; use App\Http\Controllers\Admin\Publi\BaseController; use Illuminate\Http\Request; class GoodsController extends BaseController { public function goods_list(Request $request){ //获取参数         $page=1;         $keyword='';         //当前页         if(is_array($this->pathinfo)){             //当前页             if (array_key_exists("page",$this->pathinfo)) {                 $page=$this->pathinfo['page'];             }             //关键词             if (array_key_exists("keyword",$this->pathinfo)) {                 $keyword=$this->pathinfo['keyword'];             }         }         dump($page);         dump($keyword);         exit; } }

推荐:laravel教程

以上就是Laravel5.5仿ThinkPHP的pathinfo传参示例的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: Laravel5.5
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:简单16步搞定Laravel Echo的使用

相关资讯