我正在尝试向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中使用变量“角色”
答案 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
您将获取路线调用的所有方法的列表,并查看设置是否正确