【问题标题】:Laravel get the route that do the POST or GET request laravelLaravel 获取执行 POST 或 GET 请求的路由 laravel
【发布时间】:2021-08-31 23:11:35
【问题描述】:

我正在尝试获取对路由执行 POST/GET 请求的 url 的来源。例如:

Route::post('/do-something', somethingController@getWhoRequesting);

然后作为示例,在视图上我执行 ajax 或简单的表单发布到该路由,该路由来自 localhost:8888/my-web-view。如何获取谁在请求我的 /do-something 端点的 url?我期待getWhoRequesting(),但我得到了'/my-web-view'。
提前致谢

【问题讨论】:

    标签: php laravel laravel-routing


    【解决方案1】:

    你可以使用 request 从 requestin 控制器获取完整的 url

    request()->fullUrl();  or $request->fullUrl();
    

    更新:

    如果您想捕获所有请求,则可以创建中间件并将其分配给所有路由

    php artisan make:middleware  RequestCapture
    

    那么文件会是这样的

    <?php
    
    namespace App\Http\Middleware;
    
    use Closure;
    use Illuminate\Http\Request;
    
    
    class RequestCapture
    {
        /**
         * Handle an incoming request.
         *
         * @param  \Illuminate\Http\Request  $request
         * @param  \Closure  $next
         * @return mixed
         */
        public function handle(Request $request, Closure $next)
        {
    
           //here you can capture all $request for assigned middleware routes
    
            return $next($request);
        }
    }
    

    在kernal.phpprotected $routeMiddleware中也注册这个中间件

     'requestCapture' => \App\Http\Middleware\RequestCapture::class,
    

    然后你可以分配到路由组

    Route::group(['middleware' => 'requestCapture'], function () {
    
    });
    

    【讨论】:

    • 谢谢,但是当我点击 'do-something' 时我不想得到 'do-something' ,我想获得 'my-web-view',即命中 POST 端点的路线
    • 你可以像更新我的帖子一样在中间件中捕获
    【解决方案2】:

    你可以使用 Laravel 的路径方法。 path 方法返回请求的路径信息。所以,如果传入的请求是针对http://example.com/foo/bar,那么path方法会返回foo/bar:

    $uri = $request->path();
    

    我希望这是您正在寻找的东西??

    【讨论】:

      猜你喜欢
      • 2018-08-05
      • 1970-01-01
      • 1970-01-01
      • 2021-01-26
      • 1970-01-01
      • 2021-12-03
      • 2018-04-20
      • 2017-11-11
      • 2015-05-28
      相关资源
      最近更新 更多