【问题标题】:Laravel - Undefined variable: InstructorLaravel - 未定义的变量:讲师
【发布时间】:2020-06-13 10:08:20
【问题描述】:

我正在尝试通过 create.blade.php 上的表单传递具有特定角色 ID 的用户,请参见下文;

@extends('layouts.app')

@section('content')
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-header">Create Course</div>
                <div class="card-body">

                        <form method="POST" action="{{ route('admin.courses.store') }}" enctype="multipart/form-data">
                            @csrf

                            <div class="panel-body">
                                    @if (Auth::user()->isAdmin())
                                    <div class="row">
                                        <div class="col-xs-12 form-group">
                                            {!! Form::label('Instructor', 'Instructor', ['class' => 'control-label']) !!}
                                            {!! Form::select('Instructor[]', $Instructor, old('Instructor'), ['class' => 'form-control select2', 'multiple' => 'multiple']) !!}
                                            <p class="help-block"></p>
                                            @if($errors->has('Instructor'))
                                                <p class="help-block">
                                                    {{ $errors->first('Instructor') }}
                                                </p>
                                            @endif
                                        </div>
                            </div>
                                    @endif

                            <div class="form-group">
                                <label class="required" for="name">Course Title</label>
                                <input class="form-control {{ $errors->has('title') ? 'is-invalid' : '' }}" type="text" name="title" id="id" value="{{ old('title', '') }}" required>
                                @if($errors->has('name'))
                                <div class="invalid-feedback">
                                    {{ $errors->first('name') }}
                                </div>
                            @endif
                         </div>

                        <div class="form-group">
                            <button class="btn btn-danger" type="submit">
                                Save
                            </button>
                        </div>
                    </form>
                </div>
                </div>
@endsection

用户.php

class User extends Authenticatable
{

protected $fillable = [
        'name', 'email', 'password',
    ];

protected $hidden = [
        'password', 'remember_token',
    ];

public function role()
    {
        return $this->belongsToMany(Role::class, 'role_user');
    }


    public function isAdmin()
    {
        return $this->role()->where('role_id', 1)->first();
    }

    public function roles(){


           return $this->belongsToMany('App\Role'); 
}

CoursesController.php

我的创建函数:

protected function create()
    {
        {
            $Instructor = \App\User::whereHas('role', function ($q) { $q->where('role_id', 2); } )->get()->pluck('title', 'id');

            // $courses = Course::all()->pluck('title');

            return view('admin.courses.create', compact('courses'));
        }
    }

正在返回以下错误:

未定义变量:Instructor(查看: C:\xampp\htdocs\test\resources\views\admin\courses\create.blade.php)

我不确定我哪里出错了。感谢您的帮助。

参考我的最新评论:

【问题讨论】:

  • 您将$courses 传递给您的视图(甚至没有设置),而不是$Instructor
  • 我不确定你的意思..我是 laravel 的新手,你介意详细说明吗?谢谢你
  • 这里是关于如何pass data to views 的文档。基本上是蔡古贺的回答

标签: php laravel laravel-form


【解决方案1】:

在控制器中,您缺少将 Instructor 传递给您的视图:

return view('admin.courses.create', compact('courses', 'Instructor'));

【讨论】:

  • @TsaiKogo,你知道为什么数据没有通过吗?我试图弄清楚但不确定。我已将图片附加到我的原始帖子中。
  • @Zak 尝试使用{!! Form::select('Instructor[]', $Instructor, Input::get('Instructor'), ['class' =&gt; 'form-control select2', 'multiple' =&gt; 'multiple']) !!}
  • @TsaiKogo 对此表示感谢,但我收到以下错误:找不到类“输入”(视图:C:\xampp\htdocs\test\resources\views\admin\courses\create.blade .php)
  • @Zak 或者你可以尝试在第三个参数中使用null。尝试在那里查看讲师数据。{!! Form::select('Instructor[]', $Instructor, null, ['class' =&gt; 'form-control select2', 'multiple' =&gt; 'multiple']) !!}
  • @TsaiKogo,你能解释一下怎么做吗?对不起,我是 laravel 的新手。我还导入了输入外观,它返回的结果与我最初的屏幕截图相同。
猜你喜欢
  • 2019-04-29
  • 1970-01-01
  • 2015-05-15
  • 2019-03-01
  • 2023-03-05
  • 2018-01-26
  • 2020-09-24
  • 2021-10-31
  • 2014-06-03
相关资源
最近更新 更多