Laravel5.5仿ThinkPHP的pathinfo传参示例

发布时间 - 2020-03-28 00:00:00    点击率:

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,我也很无奈啊..

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教程


# php  # laravel  # nginx  # thinkphp  # http  # 关键词  # 我也  # 是这样  # 当前页  # 所能  # 很无奈  # 转数  # 大佬们  # try_files  # dir 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel distinct去重查询_Laravel Eloquent去重方法  5种Android数据存储方式汇总  如何在新浪SAE免费搭建个人博客?  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  如何注册花生壳免费域名并搭建个人网站?  详解Nginx + Tomcat 反向代理 负载均衡 集群 部署指南  如何在建站之星绑定自定义域名?  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  Mybatis 中的insertOrUpdate操作  详解Oracle修改字段类型方法总结  javascript中对象的定义、使用以及对象和原型链操作小结  详解Nginx + Tomcat 反向代理 如何在高效的在一台服务器部署多个站点  如何用ChatGPT准备面试 模拟面试问答与职场话术练习教程  如何快速上传建站程序避免常见错误?  Laravel如何为API编写文档_Laravel API文档生成与维护方法  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  在centOS 7安装mysql 5.7的详细教程  Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用  Laravel如何与Pusher实现实时通信?(WebSocket示例)  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  太平洋网站制作公司,网络用语太平洋是什么意思?  JS碰撞运动实现方法详解  Laravel如何使用Telescope进行调试?(安装和使用教程)  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  详解Huffman编码算法之Java实现  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  潮流网站制作头像软件下载,适合母子的网名有哪些?  rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted  移动端脚本框架Hammer.js  Swift中循环语句中的转移语句 break 和 continue  php打包exe后无法访问网络共享_共享权限设置方法【教程】  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】  Laravel怎么实现验证码功能_Laravel集成验证码库防止机器人注册  如何在宝塔面板中创建新站点?  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  Laravel如何优化应用性能?(缓存和优化命令)  如何在阿里云ECS服务器部署织梦CMS网站?  javascript日期怎么处理_如何格式化输出  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  iOS正则表达式验证手机号、邮箱、身份证号等  详解Android图表 MPAndroidChart折线图  Laravel如何优雅地处理服务层_在Laravel中使用Service层和Repository层  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  Laravel如何使用.env文件管理环境变量?(最佳实践)  JavaScript如何实现音频处理_Web Audio API如何工作?