Laravel-ErrorException(E_ERROR)未定义的变量

时间:2019-04-01 10:12:41

标签: php laravel laragon

我正在尝试向auth.register添加一个下拉菜单,但出现错误(未定义变量)。我已经尝试了很多东西,但没有任何反应。

我在以下方面进行了更改

RegisterController.php,Register.blade.php,web.php


  

RegisterController.php:添加此功能:

public function combo() {
    $roles = rol::all();
    dd($roles);
    return view('auth.register',compact('roles'));
}

  

web.php:

Auth::routes();
Route::get('auth.register', 'auth.RegisterController@combo');
Route::get('/home', 'HomeController@index')->name('home');

  

register.blade.php:试试看,但收到错误消息:

<select name="id_rol" id="id_rol" class="form-control">
    <option value="" disabled>Choose an option</option>
    @foreach ($roles as $rol)
        <option value="{{ $rol->id }}">
            {{ $rol->nombre }}
        </option>
    @endforeach
 </select>

我需要在register.blade.php中使用变量“角色”

2 个答案:

答案 0 :(得分:1)

首先,Auth::routes();已经具有指向不同功能的route('/ register')

因此注释掉Auth::routes();并使用您的Route :: get('/ register','auth.RegisterController@combo');

答案 1 :(得分:-1)

我认为您应该使用

return view('auth.register', ['roles' => $roles]);

假设$ roles是一个标准的雄辩的集合,并且结果良好,那么它应该可以正常工作

此外,您应该检查路由是否正常。如果您自动生成了Auth路径,并且使用了

Auth::routes();

在路线内,如果放置在该行下方,则会忽略您的路线。

因此,请检查路由是否全部就绪,否则可以为路由加载标准的RegisterController方法,但仍加载新视图(不带$ roles变量)

如果您需要调用自定义函数,请在web.php中在Auth :: routes()或(更好)覆盖方法之前调用路径

无需编辑Auth :: routes(),您可以简单地在RegistrationController.php中覆盖showRegistrationForm()方法

Auth \ RegistrationController.php

public function showRegistrationForm() {

    $roles = rol::all();
    dd($roles);
    return view('auth.register', ['roles' => $roles]);

}

并删除您的

Route::get('auth.register', 'auth.RegisterController@combo');

由于忽略了它(laravel检查第一个匹配项,并且在自定义路由之前已读取Auth :: routes())

另一个编辑以供将来参考: 如果您使用CLI命令

php artisan route:list

您将获取路线调用的所有方法的列表,并查看设置是否正确