首页 > 解决方案 > production.ERROR:未定义变量:id Laravel 刀片

问题描述

在我的 Laravel-5.8 中,控制器中有以下代码:

public function appraisal(Request $request)
{
    try {        
        $userCompany = Auth::user()->company_id;
        $userId = Auth::user()->id; 
        $company = OrgCompany::where('id', $userCompany)->first();
        $identities = Identity::where('company_id', $userCompany)->pluck('appraisal_name','id');
        $goals = AppraisalGoal::where('employee_id', $userId)
            ->where(function ($query) {
                $query->where('is_approved', 3)->orWhere('is_visible', 0);
            })
            ->whereNull('deleted_at')
            ->orderBy('goal_type_id');

        $method = $request->method();

        if ($request->isMethod('post')) {
            $id = $request->input('identity_id');
            if ($request->has('search')) {
                // select search
                if ($request->input('identity_id')) {
                    $goals->where('identity_id',$request->input('identity_id'));
                }
                $goals = $goals->get();  
                return view('appraisal-default',['goals' => $goals, 'identities' => $identities]);
            } elseif ($request->has('viewIdentity')) {
                // select goal identity
                if ($request->input('identity_id')) {
                    return view('performance_dashboard', $id);
                }
            }
        } else {
            //select current year
            $goals = $goals->get();               
            return view('appraisal-default',['goals' => $goals, 'identities' => $identities]);
        }
    } catch (Exception $exception) {
        Log::error($exception);
        Session::flash('error', 'Action failed! Please try again');
        return back();
    }
}  

查看刀片:评估-默认

<div class="row" style="margin-bottom: 10px">
  <label class="control-label"> Performance Period:<span style="color:red;">*</span></label>
  <div class="col-sm-8">
    <select id="identity" name="identity_id" class="form-control">
      <option value="">--- Select Performance Period ---</option>
      @foreach ($identities as $ids => $name)
        <option value="{{ $ids }}" {{ request( 'identity_id')==$ids ? 'selected' : ''}}>{{ $name }}</option>
      @endforeach
    </select>
  </div>

  <div class="col-xs-4">
    <button type="submit" class="btn btn-primary btn-sm" name="search">Search</button>
    <form action="{{ route('performance_dashboard', $id->id) }}" method="get" target="_blank" class="form-horizontal" enctype="multipart/form-data">
      {{csrf_field()}}
      <button type="submit" class="btn btn-secondary btn-sm" name="viewIdentity"><i class="fas fa-file-pdf"></i> View Identity</button>
    </form>
  </div>
</div>

在视图中,我有两个带有名称的按钮:search 和 viewIdentity

当。。。的时候

<select id="identity" name="identity_id" class="form-control"> 

被选中。

如果提交了搜索按钮,它将在同一页面上显示结果。这是有效的。

但是,我遇到问题的地方是提交 viewIdentity 按钮。此时它假设将下拉列表的 id 作为参数:

<form action="{{ route('performance_dashboard', $id->id) }}" method="get" target="_blank" class="form-horizontal" enctype="multipart/form-data">
  {{csrf_field()}}
  <button type="submit" class="btn btn-secondary btn-sm" name="viewIdentity"><i class="fas fa-file-pdf"></i> View Identity</button>
</form>

并在另一个页面中显示结果:performance_dashboard

我在视图中收到此错误:

production.ERROR:未定义的变量:id

它指向视图中的这一行:

<form action="{{ route('performance_dashboard', $id->id) }}" method="get" target="_blank" class="form-horizontal" enctype="multipart/form-data">

我该如何解决?

谢谢

标签: laravel

解决方案


推荐阅读