Laravel 请求:获取解析后的路由参数 Draft
问题
如何在控制器中获取路由参数,假设定义了一个路由 photos/{id}
,如何取得路由参数 id 的值?
回答
如果需要在控制器中获取路由参数,只需在控制器方法的参数列表中把路由参数放在其他依赖注入项之后依次列出即可。举个例子,假设你的路由是这样定义的:
Route::put('photos/{id}', 'PhotoController@update');
那么,在控制器 PhotoController
的 update
方法的参数列表中,在 Request
依赖注入之后列出 $id
路由参数即可:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class PhotoController extends Controller
{
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, $id)
{
//
}
}
如果是在路由闭包中使用路由参数,做法类似:
use Illuminate\Http\Request;
Route::get('/test/{name}/{id}', function (Request $request, $name, $id) {
return ['name' => $name, 'id' => $id];
});