Laravel5.5仿ThinkPHP的pathinfo传参示例

Laravel5.5仿ThinkPHP的pathinfo传参示例

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', 'ShopGoodsController@goods_list'); Route::get('/shop/goods_list/page/{page}/limit/{limit}', 'ShopGoodsController@goods_list'); Route::get('/shop/goods_list/page/{page}/limit/{limit}/keyword/{keyword}', 'ShopGoodsController@goods_list');

3、基类 apphttpControllersAdminPubliBaseController.php

立即学习PHP免费学习笔记(深入)”;

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

<?php   namespace AppHttpControllersAdminPubli;   use IlluminateFoundationBusDispatchesJobs; use IlluminateRoutingController; use IlluminateFoundationValidationValidatesRequests; use IlluminateFoundationAuthAccessAuthorizesRequests; use IlluminateHttpRequest; class BaseController extends Controller {     use AuthorizesRequests, DispatchesJobs, ValidatesRequests;       //构造函数     public function __construct() {         $this->middleware(function ($request, $next) {             //未登录的处理             //$this-&gt;dosomething($request);             //仿TP用pathinfo传参             $path=$request-&gt;path();             $this-&gt;pathinfo=$this-&gt;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=&gt;$v){                 if($k&gt;0&amp;&amp;($k%2==0)){                     $array[$v]=$arr[$k+1];                 }             }         }         if(count($array)&gt;0){             return $array;         }     }   }

3、控制器 appHttpControllersAdminShopGoodsController.php

namespace AppHttpControllersAdminShop; use AppHttpControllersAdminPubliBaseController; use IlluminateHttpRequest; class GoodsController extends BaseController { public function goods_list(Request $request){ //获取参数         $page=1;         $keyword='';         //当前页         if(is_array($this-&gt;pathinfo)){             //当前页             if (array_key_exists("page",$this-&gt;pathinfo)) {                 $page=$this-&gt;pathinfo['page'];             }             //关键词             if (array_key_exists("keyword",$this-&gt;pathinfo)) {                 $keyword=$this-&gt;pathinfo['keyword'];             }         }         dump($page);         dump($keyword);         exit; } }

推荐:laravel教程

© 版权声明
THE END
喜欢就支持一下吧
点赞6 分享