Laravel 5.1在$ request-> all()中传递参数的干净方法

时间:2015-07-10 07:47:36

标签: parameters request laravel-5.1

我正在寻找一种方法将post_id值插入$ request-> all()。我到目前为止的代码是:

        public function createReview(ReviewRequest $request, $id) {

        $review = Auth::user()->reviews()->create($request->all());
        $review->task_id = $id;
        $review->save();

        return $review;
        }

即使它正在工作,我也在寻找更清洁的方法。我的模特是:

User: hasMany->reviews ; hasMany->task
Review: belongsTo->user ; belongsTo->task
Task: belongsTo->user ; hasMany->reviews

1 个答案:

答案 0 :(得分:0)

一种方法是使用隐藏的输入字段,如:

    <input type="hidden" name="task_id" value="{{$task->id}}">

或者如果您使用 Illuminate \ Html \ HtmlServiceProvider Blade

    {!! Form::hidden('task_id', $task->id) !!}

然后你的createReview方法看起来会更清晰:

    // Controller

    public function createReview(ReviewRequest $request) {
    $review = Auth::user()->reviews()->create($request->all());

    return $review;
    }

不要忘记调整你的routes.php。您也可以添加

    // ReviewRequest.php

    $rules = [ ...,
    'task_id' => 'required',
    ];

查看ReviewRequest中的规则,以确保每次审核都属于创建任务时的任务。