以下是我在路线中直接呼叫控制器的路线。
如何将Request $request
传递给我的getBlog
函数..或者有没有办法在我的$request
控制器函数中直接获取getblog
对象??? / p>
$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);
}
});
答案 0 :(得分:4)
你可以在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...
}
....
}
答案 1 :(得分:0)
该请求是一个全局变量,您可以使用php代码甚至某些辅助Laravel函数访问它。
只需使用request()
,这与通过函数将请求作为对象传递到变量内是相同的。 (等同于收到的Request $ request变量。)
它也提高了可读性。请记住,您不能直接更改请求对象,最好使用request()-> merge(['key'=>'newValue']);