未定义变量:用户(视图:\resources\views\home.blade.php)

Undefined variable: users (View: \resources\views\home.blade.php)

您好,我正在尝试从下拉列表中的用户 table 获取一些数据(所有用户名),但出现错误:未定义的变量:用户

控制器:

  public function show($id)
  {
    $data = File::findOrFail($id);

    //$files = \DB::table('files')->get();
    $users = \DB::table('users')->get();

    return view('userhome', compact('data', /*'files',*/ 'users'));
  }

blade 文件:

  <div class="form-group">
                    <label class="text-left">Select Student</label>
                    <select name="parent_id">
                        <option value="">Select parent</option>
                        @foreach ($users as $user)
                <option value="{{ $user->id }}">{{ $user->name }}</option>
                        @endforeach
                    </select>
                </div>

路线:

  Auth::routes();

  Route::group(['middleware' => ['auth']], function(){

  Route::get('/home', 'HomeController@index');

  Route::resource('file','FileController');

  });

如何解决?

从压缩函数中删除注释项:

return view('home', compact('data',  'users'));

并且视图应该是 home 而不是 userhome。由于错误来自其他地方。

-- 编辑

在你的 home.blade.php 中删除这个:

<div class="form-group">
    <label class="text-left">Select Student</label>
    <select name="parent_id">
        <option value="">Select parent</option>
        @foreach ($users as $user)
            <option value="{{ $user->id }}">{{ $user->name }}</option>
        @endforeach
    </select>
</div>

如果您没有创建这样的文件,请将此代码移至您的 userhome.blade.php

或者在您的 HomeController index 函数中添加:

public function index()
{
    $users = User::all();

    if (Auth::user()->admin == 0) {
        $data = Auth::user()->files;
        return view('home', compact('data', 'users'));
    } else {
        $users['users'] = \App\User::all();
        return view('layouts.master', $users);
    }
    //return view('home');
    return view('home', compact('users'))->withData(null);
}

控制器:

public function show($id)
{
    $data = File::findOrFail($id);

    $users = \App\User::all();

    return view('userhome', compact('data', 'users'));
}

查看:

<div class="form-group">
    <label class="text-left">Select Student</label>
    <select name="parent_id">
        <option value="">Select parent</option>
        @foreach ($users as $user)
            <option value="{{ $user->id }}">{{ $user->name }}</option>
        @endforeach
    </select>
</div>

路线:

Route::get('users', 'HomeController')

唯一需要仔细检查的是您的视图名称,视图文件是否名为 userhome.blade.php - 如果不是,它只是被称为 home.blade.php 更改 return view('...') 部分到返回 UserController

的视图的名称

在顶部 use App\User; 然后

$users=User::all();
return view('home', compact('data', 'users'));

在 blade 文件中首先检查 {{cont($users)}} 然后去啊