在 Laravel 5.1 的 Routing 文档中,似乎没有告诉如何获取 URL 参数并将其传递给类。那么我们应该如何从URL中获取路由参数呢?
例如,使用 RESTful 资源控制器 更新用户的个人资料,您的应用程序将修补(POST 实际上)到:
/个人资料/10
那么,在 UpdateUserRequest 中的 Rules() 方法内部,如何从 URL 获取 id 10 来验证用户的电子邮件与其他用户的电子邮件是唯一的?
public fnction rules()
{
return [ 'email' => 'uniqie:users,email,'.$id ]
}
如果我 dd(Request::all()),它不包含 'id' = '10'。 请帮忙。谢谢!
更新
在表单请求验证文档中,它说 Laravel 允许您通过以下方式访问路由/URL 参数:
$this->route('id');
但它仅适用于非资源路线,例如:
Route::post('users/{id}', 'UsersController@store');
它不适用于:
Route::resource('users', 'UserController');
那么如何从资源路由中获取和传递路由参数呢?
将 id 返回给 UpdateUserRequest:
$id = $this->route('users');
因为 Route:resource 会给你 /users/{users} 而不是 /users/{id}。
您可以通过命令行使用此命令:
php artisan route:list
帮助您列出所有路线。
如果您使用资源路由,请尝试此操作
$id = 路线::输入('用户');