Неопределенная переменная: users (View: \ resources \ views \ home.blade.php) - PullRequest
0 голосов
/ 25 июня 2019

привет, я пытаюсь получить некоторые данные (все имена пользователей) из таблицы пользователей в раскрывающемся списке, но выдает ошибку: неопределенная переменная: users

Контроллер:

  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 ]

1 голос
/ 25 июня 2019

Удалить закомментированный элемент из компактной функции:

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);
}
0 голосов
/ 25 июня 2019

вверху use App\User;, затем

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

в блейд-файле, сначала проверьте {{cont ($ users)}}, затем идите в гадость

0 голосов
/ 25 июня 2019

Контроллер:

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

...