【问题标题】:How to get and pass URL parameters to classes in Laravel 5.1?如何获取 URL 参数并将其传递给 Laravel 5.1 中的类?
【发布时间】:2015-10-08 04:40:23
【问题描述】:

在 Laravel 5.1 的 Routing 文档中,它似乎没有说明如何获取 URL 参数并将其传递给类。那么我们应该如何从 URL 中获取路由参数呢?

例如,使用 RESTful Resource Controller 更新用户的个人资料,您的应用 PATCHes(实际上是 POST)到:

/profile/10

那么当在 UpdateUserRequest 的 rules() 方法中时,你如何从 URL 中获取 id 10 来验证用户的电子邮件在其他用户中是唯一的吗?

public fnction rules()
{
    return [ 'email' => 'uniqie:users,email,'.$id ]
}

如果 i dd(Request::all()),它不包含 'id' = '10'。 请帮忙。谢谢!

更新

Form Request Validation doc 中,它说 Laravel 授予您访问路由/URL 参数的权限:

$this->route('id');

但它只适用于非资源路由,例如:

Route::post('users/{id}', 'UsersController@store');

它不适用于:

Route::resource('users', 'UserController');

那么如何从资源路由中获取和传递路由参数呢?

【问题讨论】:

    标签: validation laravel-5 url-parameters


    【解决方案1】:

    返回 id 给 UpdateUserRequest:

    $id = $this->route('users');
    

    因为 Route:resource 会给你 /users/{users} 而不是 /users/{id}。

    你可以通过命令行使用这个命令:

    php artisan route:list
    

    帮助您列出所有路线。

    【讨论】:

    • 谢谢。但我的问题是将 $id 参数传递给 Laravel 在 UpdateUserRequest 类中的 rule() 方法。当我 dd(Request::all()) 时,请求中不包含 id。那么如何获取从 URL 请求的 id 参数,例如:/profile/10?其中 10 是要更新的用户的 id。
    • 试试这个。在第一个参数 $id 的控制器上的公共函数中。例如:公共函数 foocontroller($id, ProfileRequest $request)
    • 是的,已经是这样了。问题是将 id 传递给包含 rule() 方法的 ProfileRequest 类,我想在其中使用 id。
    • 好的。现在这个。希望这可行: $id = Route::input('id');把它放在你的 UpdateUserRequest 的 return [ ] 之前
    • 不。这也行不通。 Laravel 5.1 返回此错误:“找不到类 'App\Http\Requests\Route'”。我还在stackoverflow.com/questions/28530898/… 的评论中提到了这个错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 1970-01-01
    • 2019-03-14
    • 2013-06-29
    • 2016-01-18
    相关资源
    最近更新 更多