2015-12-04 64 views
1

以下是我在路由中直接呼叫控制器的路線。如何在Laravel中傳遞路由請求對象?

我怎麼能傳遞Request $requestgetBlog功能..或有任何辦法直接獲取$request對象在我的控制器的getblog功能???

$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); 
    } 

}); 

回答

3

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

use Illuminate\Http\Request; 

然後在路線的beggining:

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

而且$ request會提供給你。但這是非常糟糕的做法。你應該做的 - 是將整個邏輯到控制器這樣的:

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

,然後你可以使用你的控制器類Request類和控制器方法:

<?php namespace App\Http\Controllers\Front 

use Illuminate\Http\Request; 

class ArticleController 
{ ... 

    public function methodName(Request $request){ 
    ...function logic... 
    } 

.... 
} 
+0

不要有任何其他所以選項必須遵循這一點。非常感謝:) –

+0

@SatishUpadhyay如果這對你有幫助 - 你可以將回答標記爲答案,以便其他用戶知道哪一個幫助。 – naneri

相關問題