Php 函数参数太少,已传递0,Laravel中正好需要1

Php 函数参数太少,已传递0,Laravel中正好需要1,php,laravel,laravel-routing,Php,Laravel,Laravel Routing,我有一个项目在拉威尔-5.8 'actionURL' => route('appraisal.appraisal_goals.goal_adjustment_self_review', ['id'=>$employeeId]), 从通知操作URL,我将['id'=>$employeeId]传递到: public function goal_adjustment_self_review($id) { $goals = AppraisalGoal::where('e

我有一个项目在拉威尔-5.8

'actionURL' => route('appraisal.appraisal_goals.goal_adjustment_self_review', ['id'=>$employeeId]),
从通知操作URL,我将
['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]);
} 
然后,我有一个编辑控制器函数,它是从目标调整自我审查($id)生成的

视图:目标\调整\编辑

<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>
当我提交上述更新表单时,我遇到了以下错误:

0已通过,预期正好为1

对于这一行:

public function goal_adjustment_self_review($id)

如何解决此问题?

错误很明显,您没有向方法传递参数。该方法由路由引擎调用,这意味着您没有传递应该传递的路由参数

您的控制器方法
goal\u evaluation\u update()
包括此行(出于某种原因,两次):

return redirect()->route('evaluation.evaluation\u goals.goal\u adjustment\u self\u review');
参数在哪里


您应该做的是使用这样的控制器方法:

公共职能目标\调整\自我审核($employee)
{      
$goals=$employee->evaluation\u目标;
返回视图(“评估、评估、目标、调整、自我审查”)
->带有('goals',$goals);
} 
公共职能目标\调整\编辑(评估$目标)
{
返回视图(“评估、评估、目标、调整、编辑”)
->带有('goal',$goal);
}
公共职能目标\u调整\u更新(UpdateAppareAlgoalAdjustmentRequest$request,AppareAlgoal$goal)
{
试一试{
$goal->update($request->only('goal_type_id','weighted_score');
会话::flash('success','target Setting Weight successfully's update successfully');
}catch(\Exception$Exception){
日志::错误($exception);
会话::闪存(“错误”,“操作失败!请重试”);
}
返回重定向()
->路线(‘评估、评估、目标、调整、自我审查’,$goal);
}
然后可以这样定义路线:

Route::group(['prefix'=>'evaluation','as'=>'evaluation','namespace'=>'evaluation','middleware'=>['auth']],函数(){
路线::get('evaluation\u goals/goal\u adjustment\u self\u review/{employee}','AppraisalGoalsController@goal_adjustment_self_review')
->名称(“评估、目标、目标、调整、自我评估”);
路线::获取('evaluation\u goals/goal\u adjustment\u edit/{goal}','AppraisalGoalsController@goal_adjustment_edit')
->名称(“评估\目标。目标\调整\编辑”);
路径::put('evaluation\u goals/goal\u adjustment\u update/{goal}','AppraisalGoalsController@goal_adjustment_update')
->名称(“评估\目标。目标\调整\更新”);
});

注意:路由参数与方法参数的名称匹配。当在方法签名中声明类型时,会发生奇迹。

您可以尝试更改方法的签名定义
goal\u adjustment\u self\u review($id=null)
,因为在路由定义中路由参数是可选的。对于任何这样的可选路由参数,您也可以通过请求对象或帮助函数(如
request()->route('id')
BTW)访问控制器中的值,您的控制器至少有1700行这一事实应该是一个巨大的危险信号。这里有很多浪费的代码(例如,为单个数据库查询运行一个事务)。您的URI、方法、类和路由名称也都非常笨拙,导致在试图理解代码时进行不必要的扫描<代码>更新算法调整请求?
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: Too few arguments to function App\Http\Controllers\Appraisal\AppraisalGoalsController::goal_adjustment_self_review(),
public function goal_adjustment_self_review($id)