【问题标题】:How to pass Request object from route in Laravel?如何从 Laravel 中的路由传递 Request 对象?
【发布时间】:2016-03-09 01:09:35
【问题描述】:

以下是我在路由中直接调用控制器的路由。

如何将Request $request 传递给我的getBlog 函数.. 或者有什么方法可以直接在控制器的getblog 函数中获取$request 对象???

$artObj = App::make('App\Http\Controllers\Front\ArticleController'); 
return $artObj->getBlog($id);

路线中的代码:

Route::get('/{slug}', function($slug) {
    // Get Id and Type depending on url 
    $resultarray = App\Model\UrlAlias::getTypefromUrl($slug);
    if(!empty($resultarray)) {
        if($resultarray[0]['type'] == 'article') {
            $id = $resultarray[0]['ref_id'] ;
            $artObj = App::make('App\Http\Controllers\Front\ArticleController');
            return $artObj->getBlog($id);
        } else {
            return Response::view("errors.404", $msg, 400);
        }
    } else {
        return Response::view("errors.404", array(), 400);
    }

});

【问题讨论】:

    标签: laravel-5 request


    【解决方案1】:

    Request 是一个全局变量,你可以在任何地方使用 php 代码甚至一些 Laravel 辅助函数来访问它。

    只需使用request(),它与通过函数将请求作为变量内的对象传递是一样的。 (相当于收到的 Request $request 变量)。

    它也提高了可读性。请记住,您不能直接更改请求对象,您最好使用 request()->merge(['key' => 'newValue']);

    【讨论】:

      【解决方案2】:

      你可以在routes.php文件的头部做:

      use Illuminate\Http\Request; 
      

      然后在你的路线开始:

      Route::get('/{slug}', function($slug, Request $request) {
      

      $request 将可供您使用。但这是非常糟糕的做法。你应该做的 - 像这样将整个逻辑移动到控制器中:

      Route::group(['namespace' => 'Front'], function(){
         Route::get('/{slug}', 'ArticleController@methodName'); 
      })
      

      然后你就可以在你的控制器类和控制器方法中使用Request类了:

      <?php namespace App\Http\Controllers\Front
      
      use Illuminate\Http\Request; 
      
      class ArticleController 
      { ...
      
         public function methodName(Request $request){
           ...function logic...
         }
      
       ....
      }
      

      【讨论】:

      • 没有任何其他选择,所以必须遵循这个。非常感谢:)
      • @SatishUpadhyay 如果对您有帮助 - 您可以将回复标记为答案,以便其他用户知道哪一个有帮助。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-27
      • 2016-07-01
      • 2015-03-16
      • 2016-08-27
      • 2023-04-04
      • 2021-01-04
      • 2019-12-15
      相关资源
      最近更新 更多