Skip to content

All topics  /  Laravel

Laravel 7/6 Validation Email or Phone

Laravel

Teams applying “Laravel 7/6 Validation Email or Phone” in a production project can use this reference page to record implementation, review and debugging time, then compare that effort with tests and shipped functionality instead of treating activity as performance by itself.

Before copying the example into a live application, confirm version-specific behaviour with the official Laravel website and test it against the project’s actual database and runtime.

Jan 20, 2020

Hi Dev,

Today, I will share you how to validate email or phone number validation in laravel application. You will use this validation then The email field is required when mobile no is not present.The mobile no field is required when email is not present.

In this validation The field under validation must be present and not empty only when any of the other specified fields are not present.

You will enter phone number then email is optional and email in enter email then phone number is optional.

Here is a solution and i also give you full example with route and view file too. Let's see bellow solution :

$request->validate([
    'name' => 'required',
    'email' => 'required_without:mobile_no',
    'mobile_no' => 'required_without:email'
]);

Route: routes/web.php


Route::get('emailOrmobile','FrontHomeController@emailOrmobile');
Route::post('emailOrmobile','FrontHomeController@storeEmailOrmobile')->name('emailOrmobile.store');

Controller : app/Http/controllers/FrontHomeController.php

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class FrontHomeController extends Controller
{
    public function emailOrmobile()
    {
        return view('validation.emailOrmobile');
    }
    public function storeEmailOrmobile(Request $request)
    {
        $request->validate([
            'name' => 'required',
            'email' => 'required_without:mobile_no',
            'mobile_no' => 'required_without:email'
        ]);

        
        return redirect()->back();
    }
}

View : resources/views/validation/emailOrMobile.blade.php

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css" integrity="sha256-NuCn4IvuZXdBaFKJOAcsU2Q3ZpwbdFisd5dux4jkQ5w=" crossorigin="anonymous" />
    <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
</head>
<body>
    <div class="container">
        <div class="row">
            <div class="col-md-6 offset-3">
                <div class="card mt-5">
                    <div class="card-header text-center bg-info">
                        <h3 class="text-white"> <strong>Eamil Or Phone Validation Nicesnippets.com</strong></h3>
                    </div>
                    <div class="card-body">
                        @if (count($errors) > 0)
                            <ul class="alert alert-danger">
                            @foreach($errors->all() as $error)
                               <li>{{ $error }}</li> 
                            @endforeach
                            </ul>
                        @endif
                        <form action="{{ route('emailOrmobile.store') }}" method="post">
                            @csrf
                            <div class="form-group">
                                <label>Name : </label>
                                <input type="text" name="name" class="form-control">
                            </div>
                            <div class="form-group">
                                <div class="row">
                                    <div class="col-md-6">
                                        <label>Email : <span class="text-danger">**</span></label>
                                        <input type="text" name="email" class="form-control" placeholder="Enter Email">
                                    </div>
                                    <div class="col-md-6">
                                        <label>Phone : <span class="text-danger">**</span></label>
                                        <input type="text" name="mobile_no" class="form-control" placeholder="Enter Mobile Number">
                                    </div>
                                </div>
                            </div>
                            <div class="text-center">
                                <button class="btn btn-success"><i class="fa fa-floppy-o" aria-hidden="true"></i> Save </button>
                            </div>
                        </form>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>

It will help you...