以下是我直接在路线中致电我的控制器的路线。
如何传递Request $request给我的getBlog函数。或者有什么方法可以直接$request在getblog控制器的函数中获取对象?
$artObj = App::make('App\Http\Controllers\Front\ArticleController');
return $artObj->getBlog($id);
Run Code Online (Sandbox Code Playgroud)
路线代码:
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);
}
});
Run Code Online (Sandbox Code Playgroud)
您可以在routes.php文件的开头执行以下操作:
use Illuminate\Http\Request;
Run Code Online (Sandbox Code Playgroud)
然后开始您的路线:
Route::get('/{slug}', function($slug, Request $request) {
Run Code Online (Sandbox Code Playgroud)
$ request将对您可用。但这是极其糟糕的做法。您应该做的是-将整个逻辑移入控制器,如下所示:
Route::group(['namespace' => 'Front'], function(){
Route::get('/{slug}', 'ArticleController@methodName');
})
Run Code Online (Sandbox Code Playgroud)
然后可以在控制器类和控制器方法中使用Request类:
<?php namespace App\Http\Controllers\Front
use Illuminate\Http\Request;
class ArticleController
{ ...
public function methodName(Request $request){
...function logic...
}
....
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13580 次 |
| 最近记录: |