Laravel 6未定义变量:工作

Posted

技术标签:

【中文标题】Laravel 6未定义变量:工作【英文标题】:Laravel 6 Undefined variable: jobs 【发布时间】:2021-08-07 10:36:48 【问题描述】:

我认为没有错误,但 Laravel 显示以下错误:

未定义变量:工作

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>
             

still showing this error

【问题讨论】:

你需要通过 data 而不是 $data 到 compact 方法 【参考方案1】:

根据错误消息,您发布的视图是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', [ ...$data, ...compact('job_category') ]);

【讨论】:

以上是关于Laravel 6未定义变量:工作的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 6路线未定义

变量存在时未定义的变量 laravel

未定义的变量 Laravel 8 [关闭]

视图页面laravel中的未定义变量[关闭]

选择框 laravel 未定义的变量

视图laravel内部未定义的变量