Laravel - ErrorException (E_ERROR) 未定义的变量
Laravel - ErrorException (E_ERROR) Undefined variable
我正在尝试向 auth.register 添加下拉菜单,但出现错误(未定义的变量)。我已经尝试了很多东西,但没有任何反应。
我已更改:
RegisterController.php、Register.blade.php、web.php
RegisterController.php: Add this function:
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: Try this but get the error message:
<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>
我需要变量 "roles" 可以在 register.blade.php
中使用
我认为你应该使用
return view('auth.register', ['roles' => $roles]);
假设 $roles 是一个标准的 eloquent 集合,它应该可以正常工作
除此之外,您应该检查路线是否正常。如果您自动生成 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
你得到你的路由调用的所有方法的列表,看看你的设置是否正确
首先,Auth::routes();
已经有 route('/register') 指向不同的函数
所以注释掉 Auth::routes();
并使用你的 Route::get('/register', 'auth.RegisterController@combo');
我正在尝试向 auth.register 添加下拉菜单,但出现错误(未定义的变量)。我已经尝试了很多东西,但没有任何反应。
我已更改:
RegisterController.php、Register.blade.php、web.php
RegisterController.php: Add this function:
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: Try this but get the error message:
<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>
我需要变量 "roles" 可以在 register.blade.php
中使用我认为你应该使用
return view('auth.register', ['roles' => $roles]);
假设 $roles 是一个标准的 eloquent 集合,它应该可以正常工作
除此之外,您应该检查路线是否正常。如果您自动生成 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
你得到你的路由调用的所有方法的列表,看看你的设置是否正确
首先,Auth::routes();
已经有 route('/register') 指向不同的函数
所以注释掉 Auth::routes();
并使用你的 Route::get('/register', 'auth.RegisterController@combo');