我正在尝试验证我的 Laravel 应用程序中的复选框。复选框的 HTML 名称和值是从我的数据库生成的,我正在循环显示所有复选框。我如何执行验证规则以便至少选中或需要一个框?这些是我的 Blade 文件中的相关 View 代码和我的 Controller 中的方法。
//Snippet from create-user.blade.php
<div class='form-group'>
@foreach ($roles as $role) //$role variable gets its data from the db
{{ Form::label('role', $role->display_name) }}
{{ Form::checkbox($role->name, $role->id) }}
@endforeach
</div>
//Snippet from UserController.php
public function addUser(Request $request)
{
$this->validate($request, [
'name'=>'required|max:120|alpha_dash',
'email'=>'required|email|unique:users',
$role->name =>'required', //This line results in 'Undefined variable: role'
'password'=>'required|min:4',
'password_confirmation'=>'required|min:4']
);
$email = $request['email'];
$name = $request['name'];
$password = bcrypt($request['password']);
$user = new User();
$user->email = $email;
$user->name = $name;
$user->password = $password;
$user->save();
return redirect()->route('account');
}
我用什么来代替验证数组中的 $role->name
?
谢谢
最佳答案
与其创建带有角色名称的复选框,不如创建带有静态名称的复选框,如 roles[]
。我修改了你的代码,你看看。还添加了附加到用户的角色(我假设您在 User
模型中已经有 roles
关系)。
//Snippet from create-user.blade.php
<div class='form-group'>
@foreach ($roles as $role) //$role variable gets its data from the db
{{ Form::label('roles', $role->display_name) }}
{{ Form::checkbox('roles[]', $role->id) }}
@endforeach
</div>
//Snippet from UserController.php
public function addUser(Request $request)
{
$this->validate($request, [
'name' => 'required|max:120|alpha_dash',
'email' => 'required|email|unique:users',
'roles' => 'required',
'password' => 'required|min:4',
'password_confirmation' => 'required|min:4'
]
);
$email = $request['email'];
$name = $request['name'];
$password = bcrypt($request['password']);
$user = new User();
$user->email = $email;
$user->name = $name;
$user->password = $password;
$user->save();
//attach roles
$user->roles()->sync($request->input('roles',[]));
return redirect()->route('account');
}
关于php - 验证多个复选框 laravel 5.2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36454400/