【问题标题】:FormRequest with route parameter (Laravel 5)带有路由参数的 FormRequest (Laravel 5)
【发布时间】:2015-04-17 12:45:58
【问题描述】:

我目前正在研究 FormRequest 对象以使用它来执行传入数据的身份验证和验证。但是,在使用模型注入时,我无法让它工作。

Routes.php:

Route::model('post', 'Post');
Route::model('comment', 'Comment');
Route::resource('post', 'PostController');
Route::resource('post.comments', 'CommentController');

发布请求:

class StoreCommentRequest extends FormRequest {

    public function authorize()
    {
        $post = $this->route('post');
        $owners = $report->users;

        return $owners->contains(Auth::id());
    }

    public function rules()
    {
        return [
            'post_id' => 'required|numeric|exists:posts,id'
        ];
    }

}

每当发表评论时,我都会收到消息:

"The post id field is required"

问题是我似乎无法从绑定到路由的 Post 模型中“注入”post_id 的正确值。

是否可以使用路由参数?如果有,怎么做?

【问题讨论】:

  • 在 authorize() 函数中执行 dd(\Input::all()); 并检查天气 id 值是否已分配
  • id 参数不与数据一起发布。相反,我想从路由中检索参数。
  • 试试这个:$post = $this->route('post_id'); 另外,\Input::all() 也应该有来自路由的值
  • post_idroutes.php中定义的URL参数还是表单提交的东西?

标签: routing laravel-5


【解决方案1】:

您不需要像那样验证资源的 ID - 您应该确保资源在控制器级别是正确的,并保留表单数据的验证规则。因此,控制器中的处理程序应如下所示:

public function store(StoreCommentRequest $request, Post $posts)
{
    $post = $posts->findOrFail($request->post_id);

    // Do some more stuff here
}

【讨论】:

    猜你喜欢
    • 2015-11-17
    • 2017-10-21
    • 2017-07-10
    • 2021-09-28
    • 2018-08-31
    • 2016-01-20
    • 1970-01-01
    • 2015-12-06
    • 2017-04-04
    相关资源
    最近更新 更多