Reputation: 5829
I am using the default Laravel 5 user registration stuff which uses the registrar.php file app/Services/Registrar.php
I need to do a custom validation rule to check that there is some stuff stored in the session otherwise the user shouldn't be able to register.
I have tried creating my own validation rule but it doesn't seem to be getting called. What am I doing wrong?
<?php namespace App\Services;
use App\User;
use Event;
use Validator;
use Illuminate\Contracts\Auth\Registrar as RegistrarContract;
use App\Events\UserRegistered;
use Session;
class Registrar implements RegistrarContract {
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return \Illuminate\Contracts\Validation\Validator
*/
public function validator(array $data)
{
Validator::extend('required_images', function($attribute, $value, $parameters)
{
die("rule called");
});
return Validator::make($data, [
'first_name' => 'required_images|required|max:255',
'last_name' => 'required|max:255',
'discount_code' => 'max:255',
'register_email' => 'required|email|confirmed|max:255|unique:users,email',
'register_password' => 'required|confirmed|min:6|max:60'
]);
}
}
Also I have just attached the rule required_images to the first_name field but since it doesn't actually relate to a field in the registration form is there a better way to trigger it?
Upvotes: 1
Views: 2669
Reputation: 152980
If you look closely at the validator()
function you can see that there's actually a return
statement:
public function validator(array $data)
{
return Validator::make($data, [
// ^^^
'first_name' => 'required_images|required|max:255',
'last_name' => 'required|max:255',
// ...
That means your rule never get's registered. You should do it before instead:
public function validator(array $data)
{
Validator::extend('required_images', function($attribute, $value, $parameters)
{
die("rule called");
});
return Validator::make($data, [
'first_name' => 'required_images|required|max:255',
'last_name' => 'required|max:255',
'discount_code' => 'max:255',
'register_email' => 'required|email|confirmed|max:255|unique:users,email',
'register_password' => 'required|confirmed|min:6|max:60'
]);
}
Upvotes: 2