Php 如何将工作下拉列表添加到我的laravel注册表中?
我正在尝试在我的注册表格中添加一个下拉列表,以便用户可以选择他们拥有的功能类型。例如,将有两个选项,一个是学生,他们登录后只能编辑/删除自己的内容,另一个是管理员,管理员可以编辑/删除所有内容 目前,我已成功将下拉列表添加到表单中,并显示在表单中,但当我单击“注册”时,我会收到一条错误消息,说明“角色”字段是必需的,即使我已选择了一个角色: 像这样: 角色字段已选中,当错误弹出时取消选择。 这是我的registration.blade.php文件中的代码:Php 如何将工作下拉列表添加到我的laravel注册表中?,php,laravel,drop-down-menu,homestead,Php,Laravel,Drop Down Menu,Homestead,我正在尝试在我的注册表格中添加一个下拉列表,以便用户可以选择他们拥有的功能类型。例如,将有两个选项,一个是学生,他们登录后只能编辑/删除自己的内容,另一个是管理员,管理员可以编辑/删除所有内容 目前,我已成功将下拉列表添加到表单中,并显示在表单中,但当我单击“注册”时,我会收到一条错误消息,说明“角色”字段是必需的,即使我已选择了一个角色: 像这样: 角色字段已选中,当错误弹出时取消选择。 这是我的registration.blade.php文件中的代码: <div class=&quo
<div class="form-group row">
<label for="role" class="col-md-4 col-form-label text-md-right">{{ __('Role') }}</label>
<div class="col-sm-6">
<select class="form-control" id="role" name="role_selected" required focus>
<option value="Admin" selected>Admin</option>
<option value="Student" selected>Student</option>
<option value="Select Role" disabled selected>Select Role</option>
</select>
</div>
</div>
这是我在registerController和user表中的代码:
RegisterController.php:
protected function validator(array $data)
{
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password'=> ['required', 'string', 'min:8', 'confirmed'],
'role',
]);
}
/**
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\User
*/
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => Hash::make($data['password']),
'role' => $data['role'],
]);
}
}
我的创建用户表:
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateUsersTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('users', function (Blueprint $table) {
$table->id();
$table->string('name');
$table->string('email')->unique();
$table->string('role');
$table->string('password');
$table->rememberToken();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('users');
}
}
在您的选择标记代码中,您已为选择的角色的名称
,这是在表单验证中验证角色时出错的原因。
请使用以下代码进行修复:
<select class="form-control" id="role" name="role" required focus>
<option value="Admin" selected>Admin</option>
<option value="Student" selected>Student</option>
<option value="Select Role" disabled selected>Select Role</option>
</select>
管理
学生
选择角色
刀片式锉刀
尝试这可能是它的工作如果这对您有效,请标记为已接受@es915Side注意:允许用户选择是否作为管理员进行控制,这在设计方面不是一个明智的决定。任何用户都可以选择管理员角色,然后拥有比预期更大的访问/控制权限-想想看我知道我主要是想让下拉列表正常工作我现在收到以下错误:SQLSTATE[HY000]:一般错误:1364字段“角色”没有默认值(SQL:insert intousers
(name
,email
,password
,updated\u at
,created\u at
)我找出了问题所在,我只是在user.php文件中的受保护的可填充项中添加了“role”
<select class="form-control" id="role" name="role" required focus>
<option value="Admin" selected>Admin</option>
<option value="Student" selected>Student</option>
<option value="Select Role" disabled selected>Select Role</option>
</select>
<div class="form-group row">
<label for="role" class="col-md-4 col-form-label text-md-right">{{ __('Role') }}</label>
<div class="col-sm-6">
<select class="form-control" id="role" name="role" required focus>
<option value="Admin">Admin</option>
<option value="Student">Student</option>
<option value="" disabled selected>Select Role</option>
</select>
</div>
protected function validator(array $data)
{
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'password'=> ['required', 'string', 'min:8', 'confirmed'],
'role' => ['required', 'string'],
]);
}