验证多个复选框 laravel 5.2
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/36454400/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Validating multiple checkboxes laravel 5.2
提问by Caleb Oki
I am trying to validate checkboxes in my Laravel application. The HTML name and values of the checkbox are generated from my database and I am doing a loop to display all the boxes. How do I do a validation rule so that at least one box is checked or required? These are the relevant view code from my blade file and the method from my controller.
我正在尝试验证 Laravel 应用程序中的复选框。复选框的 HTML 名称和值是从我的数据库生成的,我正在循环显示所有框。如何执行验证规则,以便至少选中或需要一个框?这些是来自我的刀片文件的相关视图代码和来自我的控制器的方法。
//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');
}
What do I pass in place of $role->name
in the validation array?
Thanks
我$role->name
在验证数组中传递什么?谢谢
采纳答案by Giedrius Kir?ys
Instead of creating checkbox with name of role, better create checkbox with static name like roles[]
. I modified your code, have a look. Also added roles attach to user (I assuming You already have roles
relationship in User
model).
与其创建带有角色名称的复选框,不如创建带有静态名称的复选框,例如roles[]
. 我修改了你的代码,看看。还添加了附加到用户的角色(我假设您已经roles
在User
模型中建立了关系)。
//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');
}