如何解决Laravel 6 未定义变量:工作
未定义变量:jobs
public function jobCreate(Request $request){
$data['jobs'] = DB::table('jobs')->get();
$job_category = JobCategory::all();
// $job_locations = JobLocation::all();
if(Auth::user()->user_type == 'admin'){
return view('backend.job_circuler.create',compact('job_category',$data));
}
elseif(Auth::user()->user_type == 'customer'){
return view('frontend.user.job_circuler.create',compact('job','job_category'));
}
else {
abort(404);
}
}
我正确导入了所有内容,但无法正常工作。
<div class="form-group row" id="location">
<label class="col-md-3 col-from-label">
{{translate('Location')}}
<span class="text-danger">*</span>
</label>
<div class="col-md-9">
<select class="form-control aiz-selectpicker" name="location_id" id="location_id" data-live-search="true" >
<option >select location</option>
@foreach($jobs as $job)
<option value="{{ $job->location_id }}">
{{ $job->joblocation->location }}
</option>
@endforeach
</select>
@error('location')
<div class="alert alert-danger">{{ $message }}</div>
@enderror
</div>
</div>
解决方法
根据错误消息,您发布的视图是 backend.job_circuler.create
。我说得对吗?
错误说,变量 $jobs
丢失,它是正确的:您将 $job_category
作为字符串传递,但将 $data
作为数组传递。您确实可以将数组传递给 compact()
,但前提是它们包含变量名称而不是实际变量。为什么你甚至将 $jobs
包裹在 $data
中?
$jobs = DB::table('jobs')->get();
$job_category = JobCategory::all();
if(Auth::user()->user_type == 'admin'){
return view('backend.job_circuler.create',compact('job_category','jobs'));
}
当然,反之亦然:
$data['jobs'] = DB::table('jobs')->get();
$data['job_category'] = JobCategory::all();
if(Auth::user()->user_type == 'admin'){
return view('backend.job_circuler.create',$data);
}
或者,如果您出于某种原因不想更改 if 上方的代码,您仍然可以这样做:
$data['jobs'] = DB::table('jobs')->get();
$job_category = JobCategory::all();
if(Auth::user()->user_type == 'admin'){
return view('backend.job_circuler.create',[ ...$data,'job_category' => $job_category ]);
}
或者这个:
$data['jobs'] = DB::table('jobs')->get();
$job_category = JobCategory::all();
if(Auth::user()->user_type == 'admin'){
return view('backend.job_circuler.create',...compact('job_category') ]);
}
,
取决于屏幕截图中的错误
您只是忘记了,而不是将 $data
作为字符串传递给 compact
,而是将其作为 variable
传递
return view('backend.job_circuler.create','data'));
在那之后在你的刀片文件中
你需要通过 jobs
编辑你的循环是这样的
@foreach($data['jobs'] as $job)
<option value="{{ $job->location_id }}">
{{ $job->joblocation->location }}
</option>
@endforeach
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。