производство.ОШИБКА: Неопределенная переменная: идентификатор блейда Laravel

#laravel

#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. На этом этапе предполагается использовать идентификатор выпадающего списка в качестве параметра в:

 <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

Я получил эту ошибку в представлении:

производство.ОШИБКА: неопределенная переменная: идентификатор

Он указывает на эту строку в представлении:

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

Как мне решить эту проблему?

Спасибо

Комментарии:

1. Посмотрите на свой код: return view('appraisal-default',['goals' => $goals, 'identities' => $identities]); , вы 'id' => $id там проходите? Нет. Таким образом, вы не можете использовать $id в своем appraisal-default.blade.php представлении.

2. Как мне передать идентификатор выпадающего списка @foreach ($identities как $ids => $name) в качестве параметра

3. Вам нужно будет использовать JS, чтобы изменить этот URL на значение, выбранное из выпадающего списка. Или не полагайтесь на параметры URL, сгенерированные из выпадающего списка. Если вы использовали GET запрос, он будет отображаться в URL ?id={value-from-dropdown} как параметр строки запроса.