首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >参数太少,无法发挥作用,0通过,而在Laravel中只有1。

参数太少,无法发挥作用,0通过,而在Laravel中只有1。
EN

Stack Overflow用户
提问于 2020-12-18 20:10:54
回答 1查看 8.7K关注 0票数 0

我在拉拉维尔有个项目-5.8。

代码语言:javascript
复制
'actionURL' => route('appraisal.appraisal_goals.goal_adjustment_self_review', ['id'=>$employeeId]),

从Notification,我将['id'=>$employeeId]传递到:

代码语言:javascript
复制
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)生成编辑控制器函数。

代码语言:javascript
复制
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

代码语言:javascript
复制
<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>

路线:

代码语言:javascript
复制
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

这一行:

代码语言:javascript
复制
public function goal_adjustment_self_review($id)

我怎么才能解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-18 20:30:54

错误非常清楚,您没有向该方法传递参数。该方法由路由引擎调用,这意味着您没有传递应该传递的路由参数。

控制器方法goal_appraisal_update()包括这一行(出于某种原因,两次):

代码语言:javascript
复制
return redirect()->route('appraisal.appraisal_goals.goal_adjustment_self_review');

参数在哪里?

您应该使用路由模型绑定,因此控制器方法如下所示:

代码语言:javascript
复制
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);
}

然后可以这样定义路线:

代码语言:javascript
复制
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');
});

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65363332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档