带路由参数的FormRequest(Laravel 5)

时间:2015-02-16 21:57:24

标签: routing laravel-5

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

routes.php文件:

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

PostRequest:

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的正确值。

是否可以使用路线参数?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:0)

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

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

    // Do some more stuff here
}