How to Email or Phone Validation in Laravel ?

Share Me
  •  
  •  
  •  
  • 1
  •  
  •  
  •  
  •  
  •  
  •  
  •  
    1
    Share

Today now in this blog, I will share with you how to validate email or phone number validation in laravel application. So we can use this validation then the email field is required when mobile no is not present. And other hand the mobile no field is required when email is not present.

So now in this validation the field under validation we must be present and can not empty only when any of the other specified fields are empty.

Now here i will enter phone number then email is optional and when email in enter then phone number will be optional.

So here is a solution and now here i give you a full example also with route and also view file too. So just 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 Codingspoint.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>

Read Also : Laravel 8 Eloquent Global Scope Tutorial Example

I hope it will help you. Also you can follow us on Facebook

About code chef

My name is Shahriar sagor. I'm a developer. I live in Bangladesh and I love to write tutorials and tips that will help to other Developer's. I am a big fan of PHP, Javascript, JQuery, Laravel, Codeigniter, VueJS, AngularJS and Bootstrap from the early stage.

View all posts by code chef →