您的位置 首页 技术

Laravel5.5仿ThinkPHP的pathinfo传参示例

PS:目前所能找到的方法,希望不会被大佬们鄙视… 1、我的nginx配置: #test6 admin server { listen 80; server_name a…

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传参示例的详细内容,更多请关注24课堂在线网其它相关文章!

本文来自网络,不代表24小时课堂在线立场,转载请注明出处:https://www.24ketang.cn/56205.html

为您推荐

返回顶部