在Laravel 5中,是否有办法在应用程序内部/编程方式调用路由?我已经为Laravel 4找到了很多教程,但我找不到版本5的信息.
使用laravel 5.5,这个方法对我有用:
$req = Request::create('/my/url', 'POST', $params);
$res = app()->handle($req);
$responseBody = $res->getContent();
// or if you want the response to be json format
// $responseBody = json_decode($res->getContent(), true);
Run Code Online (Sandbox Code Playgroud)
资料来源:https: //laracasts.com/discuss/channels/laravel/route-dispatch
*注意:如果您尝试访问的路由具有身份验证中间件且您未提供正确的凭据,则可能会出现问题.为避免这种情况,请务必设置所需的正确标头,以便正常处理请求(例如Authorisation bearer ...).
您实际上可以调用与该路由关联的控制器,而不是在内部“调用”该路由。
例如:
路由.php
Route::get('/getUser', 'UserController@getUser');
Run Code Online (Sandbox Code Playgroud)
用户控制器.php
class UserController extends Controller {
public function getUser($id){
return \App\User::find($id);
};
}
Run Code Online (Sandbox Code Playgroud)
/getUser您可以实际调用UserController@getUser而不是调用路由。
$ctrl = new \App\Http\Controllers\UserController();
$ctrl->getUser(1);
Run Code Online (Sandbox Code Playgroud)
calling如果这就是您的意思,这与内部路线相同。希望有帮助
你可以尝试这样的事情:
// GET Request
$request = Request::create('/some/url/1', 'GET');
$response = Route::dispatch($request);
// POST Request
$request = Request::create('/some/url/1', 'POST', Request::all());
$response = Route::dispatch($request);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9876 次 |
| 最近记录: |