is it possible, in Laravel 5, to validate multiple Requests in order to insert related models after a form submission?
I know how to validate multiple Model by using Validators but I want to do it with the Request Class.
$validateUser = Validator::make(Input::all(), User::$rules);
$validateRole = Validator::make(Input::all(), Role::$rules);
if ($validateUser->fails() || $validateRole->fails()){
$validationMessages = array_merge_recursive(
$validateUser->messages()->toArray(),
$validateRole->messages()->toArray()
);
}
Request one
class CreateUserRequest extends Request {
public function rules()
{
//
}
}
Request two
class CreateRoleRequest extends Request {
public function rules()
{
//
}
}
Controller Model call :
public function store(CreateUserRequest $request, CreateRoleRequest $request2)
{
//
}
How can I validate the User input values and the Role input values using the Request approach? (and have a specific feedback if validation fails)
First, using multiple form request classes works perfectly fine.
Now of course you can't just have two forms in one. However what you can do to separate your data, is to use the array syntax for field names:
<input type="text" name="user[name]" />
<!-- and later -->
<input type="text" name="role[name]" />
In your validation rules you can then use the dot syntax to reference either the user name or the role name:
public function rules(){
return [
'role.name' => 'required'
];
}
And for creating the two models, just use this to get all the attributes for user
and role
:
$request->input('user'); // returns an array like ['name' => 'foo', 'other-user-field' => 'bar']
$request->input('role'); // returns an array like ['name' => 'baz', 'other-role-field' => 'boom']
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With