• 技术文章 >php框架 >Laravel

    Laravel5.5仿ThinkPHP的pathinfo传参示例

    藏色散人藏色散人2020-03-28 09:00:32转载1048

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

    声明:本文转载于:csdn,如有侵犯,请联系admin@php.cn删除
    专题推荐:Laravel5.5
    上一篇:简单16步搞定Laravel Echo的使用 下一篇:laravel中间件的创建思路分析
    大前端线上培训班

    相关文章推荐

    • laradock 中如何安装 Laravel Dusk• 关于Laravel5.1中配置QQ发送邮件的解决办法• 关于laravel路由配置中@的作用• 简单16步搞定Laravel Echo的使用

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网