Laravel Validation Email or Phone

Laravel 6 , Laravel

Nicesnippets

130

20-01-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...


Recommended Posts