【问题标题】:Undefined variable: users (View: \resources\views\home.blade.php)未定义变量:用户(查看:\resources\views\home.blade.php)
【发布时间】:2019-11-07 07:21:17
【问题描述】:

他试图从下拉列表中的用户表中获取一些数据(所有用户名),但它给出了错误:未定义变量:用户

控制器:

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

  });

如何解决?

【问题讨论】:

  • 你的刀片中有$users 吗?您可以检查添加类似 {{$users}}
  • 你也可以发布你的网络路线吗?
  • @CodeBoyCode 更新了问题并将路线添加到其中
  • @mare96 db 表名是“名称”,我想获取它的 {{$users}} 不工作

标签: laravel eloquent laravel-5.8


【解决方案1】:

在顶部use App\User; 然后

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

在刀片文件中首先检查 {{cont($users)}} 那就去吧

【讨论】:

  • 还是同样的问题
  • 通过dd($users)签入控制器
  • 数据库表“users”和“User”模型的协调可能存在一些问题
  • 你应该告诉我如何检查 dd()
  • 公共函数 show($id) { $users = User::all() dd($users)}
【解决方案2】:

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

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

【讨论】:

  • 这样做后同样的问题
  • 您的错误来自另一个视图。因此,请确保您走的是正确的路线。否则,请检查您在代码中的何处返回 view('home') 并确保将用户传递给该视图。
  • 你可以正确,因为我希望所有用户都使用默认的 home.blade.php 也许我必须为它创建一条新路由???
  • 你已经有一个路由,它可能在你的WelcomeController 索引函数中。这是您从中得到错误的地方。所以在那个函数中查询用户。
  • 我连默认的欢迎都没碰,,,这些都是路由ibb.co/xMswcTG
【解决方案3】:

控制器:

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('...') 部分更改为视图的名称返回用户控制器

【讨论】:

  • 它说无效的路由操作:[App\Http\Controllers\UserController]。
猜你喜欢
  • 2019-11-07
  • 2021-01-08
  • 2018-07-10
  • 2021-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-22
相关资源
最近更新 更多