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 分享