I'm having trouble trying to get form validation working in Laravel, which is odd because it usually works.
In my user model, I created rules for checking:
public static $rules = array( 'firstname'=>'required|min:2|alpha', 'lastname'=>'required|min:2|alpha', 'email'=>'required|email|unique:users', 'password'=>'required|alpha_num|between:8,12|confirmed', 'password_confirmation'=>'required|alpha_num|between:8,12', 'telephone'=>'required|between:10,12', 'admin'=>'integer' );
In my user controller, I define actions only if the verification passes, if the user is not redirected back with errors:
public function postCreate() { $validator = Validator::make(Input::all(), User::$rules); if ($validator->passes()) { $user = new User; $user->firstname = Input::get('firstname'); $user->lastname = Input::get('lastname'); $user->email = Input::get('email'); $user->password = Hash::make(Input::get('password')); $user->telephone = Input::get('telephone'); $user->save(); return Redirect::to('users/signin') ->with('message', 'Thank you for creating a new account. Please sign in.'); } return Redirect::to('users/create-account') ->with('message', 'Something went wrong') ->withErrors($validator) ->withInput(); }
The following errors have occurred:
In the view, I display errors if they exist:
@if($errors->has()) <div id="form-errors"> <p>The following errors have occurred:</p> <ul> @foreach($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif
The problem I have is that the output of this when submitting an empty form is:
validation.required validation.required validation.required validation.required validation.required validation.required
Instead:
The firstname field is required. The lastname field is required. The email field is required. The password field is required. The password confirmation field is required. The telephone field is required.
If anyone can suggest why this is happening or what I am missing, then it will be very helpful!
php validation localization laravel laravel-4
Craig van tonder
source share