H35am
H35am

Reputation: 818

Validiation check in Laravel php

I'm trying to write a validation check in PHP Laravel for a username field with the functionality to let the user know what went wrong. I have a couple of if statements with regular expression checks but it won't work. The requirements of the regular expression are: can't start with a ".", No more than 1 "." in a row, No capitals, Only a-z, No special characters. So for example like this "user.name" would be valid, but things like "username." or ".username" would all be invalid. So far I got this:

 $oValidator = Validator::make(Input::all(), [
            'username' => 'required|regex:/^[a-zA-Z0-9][\w\.]+[a-zA-Z0-9]$/',
            'username' => 'required',
            'password' => 'required',
            'firstname' => 'required',
            'lastname' => 'required',
            'email' => 'required|email'
        ]);

I want to give feedback for the mistakes that user makes, example: user input is ".username", program feedback should be "Dot in front of string is not allowed".

Upvotes: 1

Views: 136

Answers (1)

Can Celik
Can Celik

Reputation: 2087

All you have to do is to include a custom message for your validation.

 $this->validate($request, [
        'username' => 'required|regex:/^[a-zA-Z0-9][\w\.]+[a-zA-Z0-9]$/',
    ], ['regex' => 'Username cannot start with period(.), etc...]);

Your code should look like this. Please remember regex custom message will apply too all of these fields instead of just username so I would separate username validation like above.

$oValidator = Validator::make(Input::all(), [
        'username' => 'required|regex:/^[a-zA-Z0-9][\w\.]+[a-zA-Z0-9]$/',
        'username' => 'required',
        'password' => 'required',
        'firstname' => 'required',
        'lastname' => 'required',
        'email' => 'required|email'
    ], ['regex' => 'Username cannot start with period, etc...']);

Upvotes: 2

Related Questions