如何从把一个已有的 url 转为 request 或者 route 对象

假如有一个路由
/newReport/{aid}/{bid}

然后我有一个 url 如下
a.com/newReport/75337/10

我如何取出 aid bid
最好是可以还原到路由 通过 ->route (aid) 的方式
ps:不用正则

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 6
blackbai

定义方法的时候传入 $aid $bid, 与路由绑定的。

7年前 评论
Route::get('/newReport/{aid}/{bid}', function($aid, $bid){
    dd($aid, $bid);
});
7年前 评论

@施国鹏
@blackbai
两位可能理解错我的意思了,

现在有一个路由 Route::get ('/newReport/{aid}/{bid}'

我的意思是我在一个方法(这个方法非上边的那个路由)内 有一个字符串 a.com/newReport/75337/10

我想知道这个 aid 和 bid 是多少

7年前 评论
<?php

    $url = 'a.com/newReport/75337/10';
    $url = trim(strstr($url, '/'), '/');

    $param = explode('/', $url);

    $bid = end($param);
    array_pop($param);
    $aid = end($param);
    array_pop($param);

    // 拼接route
    $route = '/';
    foreach ($param as $v)
    {
        $route .= $v;
    }

    // 生成 url
         route($route, ['aid' => $aid, 'bid' => $bid]);

不是很明白详细, 这样是否符合?

7年前 评论

@施国鹏 可以的,不过你这个跟正则是一个原理差不多,不管怎么说谢谢你了

7年前 评论
leo

关键字 Illuminate\Routing\Router::findRoute,剩下的自己探索

7年前 评论