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

时间:2019-06-25 12:38:47

标签: laravel eloquent laravel-5.8

他试图从下拉菜单中的用户表中获取一些数据(所有用户名),但显示错误:未定义变量:用户

控制器:

  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'));
  }

刀片文件:

  <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');

  });

如何解决?

3 个答案:

答案 0 :(得分:1)

从压缩功能中删除评论的项目:

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);
}

答案 1 :(得分:0)

控制器:

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的视图的名称

答案 2 :(得分:0)

顶部use App\User;,然后

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

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