我在拉拉维尔有个项目-5.8。
'actionURL' => route('appraisal.appraisal_goals.goal_adjustment_self_review', ['id'=>$employeeId]),从Notification,我将['id'=>$employeeId]传递到:
public function goal_adjustment_self_review($id)
{
$goals = AppraisalGoal::where('employee_id', $id)->whereNull('deleted_at')->get();
return view('appraisal.appraisal_goals.goal_adjustment_self_review')->with(['goals' => $goals]);
} 然后由goal_adjustment_self_review($id)生成编辑控制器函数。
public function goal_adjustment_edit($id)
{
$userCompany = Auth::user()->company_id;
$userId = Auth::user()->employee_id;
$goal = AppraisalGoal::findOrFail($id);
return view('appraisal.appraisal_goals.goal_adjustment_edit')
->with('goal', $goal);
}
public function goal_adjustment_update(UpdateAppraisalGoalAdjustmentRequest $request, $id)
{
DB::beginTransaction();
try {
$goal = AppraisalGoal::findOrFail($id);
$goal->goal_type_id = $request->goal_type_id;
$goal->weighted_score = $request->weighted_score;
$goal->save();
DB::commit();
Session::flash('success', 'Goal Setting Weight is updated successfully');
return redirect()->route('appraisal.appraisal_goals.goal_adjustment_self_review');
} catch (Exception $exception) {
Log::error($exception);
DB::rollback();
Session::flash('error', 'Action failed! Please try again');
return redirect()->route('appraisal.appraisal_goals.goal_adjustment_self_review');
}
}视图: goal_adjustment_edit
<form action="{{route('appraisal.appraisal_goals.goal_adjustment_update', ['id'=>$goal->id])}}" method="post" class="form-horizontal" enctype="multipart/form-data">
{{ csrf_field() }}
<input name="_method" type="hidden" value="PUT">
<div class="card-body">
<div class="form-body">
<div class="row">
<div class="col-12 col-sm-6">
<div class="form-group">
<label class="control-label"> Weight(%):<span style="color:red;">*</span></label> <input type="hidden" id="goal_weight_balance" value="0" disabled>
<input id="total_weighted_score" type="text" name="weighted_score" value="{{old('weighted_score',$goal->weighted_score)}}" placeholder="Enter weighted score here" class="form-control" max="120" onkeyup="checkScore(this.value)">
</div>
</div>
</div>
</div>
</div>
<!-- /.card-body -->
<div class="card-footer">
<button type="submit" class="btn btn-primary">Update</button>
</div>
</form>路线:
Route::group(['prefix' => 'appraisal', 'as' => 'appraisal.', 'namespace' => 'Appraisal', 'middleware' => ['auth']], function () {
Route::get('appraisal_goals/goal_adjustment_self_review/{id?}', 'AppraisalGoalsController@goal_adjustment_self_review')->name('appraisal_goals.goal_adjustment_self_review');
Route::get('appraisal_goals/goal_adjustment_edit/{id?}', 'AppraisalGoalsController@goal_adjustment_edit')->name('appraisal_goals.goal_adjustment_edit');
Route::put('appraisal_goals/goal_adjustment_update/{id?}', 'AppraisalGoalsController@goal_adjustment_update')->name('appraisal_goals.goal_adjustment_update');
});当我提交上面的更新表单时,我得到了以下错误:
2020年-12-18 20:10:46 production.ERROR:对函数production.ERROR来说参数太少 0通过,准确地说是1
这一行:
public function goal_adjustment_self_review($id)我怎么才能解决这个问题?
发布于 2020-12-18 20:30:54
错误非常清楚,您没有向该方法传递参数。该方法由路由引擎调用,这意味着您没有传递应该传递的路由参数。
控制器方法goal_appraisal_update()包括这一行(出于某种原因,两次):
return redirect()->route('appraisal.appraisal_goals.goal_adjustment_self_review');参数在哪里?
您应该使用路由模型绑定,因此控制器方法如下所示:
public function goal_adjustment_self_review($employee)
{
$goals = $employee->appraisal_goals;
return view('appraisal.appraisal_goals.goal_adjustment_self_review')
->with('goals', $goals);
}
public function goal_adjustment_edit(AppraisalGoal $goal)
{
return view('appraisal.appraisal_goals.goal_adjustment_edit')
->with('goal', $goal);
}
public function goal_adjustment_update(UpdateAppraisalGoalAdjustmentRequest $request, AppraisalGoal $goal)
{
try {
$goal->update($request->only('goal_type_id', 'weighted_score'));
Session::flash('success', 'Goal Setting Weight is updated successfully');
} catch (\Exception $exception) {
Log::error($exception);
Session::flash('error', 'Action failed! Please try again');
}
return redirect()
->route('appraisal.appraisal_goals.goal_adjustment_self_review', $goal);
}然后可以这样定义路线:
Route::group(['prefix' => 'appraisal', 'as' => 'appraisal.', 'namespace' => 'Appraisal', 'middleware' => ['auth']], function () {
Route::get('appraisal_goals/goal_adjustment_self_review/{employee}', 'AppraisalGoalsController@goal_adjustment_self_review')
->name('appraisal_goals.goal_adjustment_self_review');
Route::get('appraisal_goals/goal_adjustment_edit/{goal}', 'AppraisalGoalsController@goal_adjustment_edit')
->name('appraisal_goals.goal_adjustment_edit');
Route::put('appraisal_goals/goal_adjustment_update/{goal}', 'AppraisalGoalsController@goal_adjustment_update')
->name('appraisal_goals.goal_adjustment_update');
});注意,路由参数与方法参数的名称匹配。当在方法签名中声明类型时,就会发生魔术。
https://stackoverflow.com/questions/65363332
复制相似问题