Reputation: 508
i am trying to make custom message bag but unable to make, i want to use the $errors
$errorMsgs = [];
if (Model::where('name', '=', Input::get('name'))->exists()) {
$errorMsgs['company_name'] = 'name already exists';
}else if (Model::where('age', '=', Input::get('age'))->exists()) {
$errorMsgs['primary_phone'] = 'age no already exists';
}else if (Model::where('mobile', '=', Input::get('mobile'))->exists()) {
$errorMsgs['primary_mobile'] = 'mobile already exists';
}else if (Model::where('pri_email', '=', Input::get('primary_email'))->exists()) {
$errorMsgs['primary_email'] = 'Primary email already exists';
}else{
// success
}
Actually i want to use errors foreach
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
Upvotes: 0
Views: 5284
Reputation: 3064
I cannot see from your question why the out-the-box unique Validation is not being used, it's for seemingly exactly this purpose. Anyway, the gist of the manual way would be something like...
// Controller
public function WhatEverController()
{
$data = [];
$errorMsgs = [];
if (Model::where('name', '=', Input::get('name'))->exists()) {
$errorMsgs['company_name'] = 'name already exists';
}
if (Model::where('age', '=', Input::get('age'))->exists()) {
$errorMsgs['primary_phone'] = 'age no already exists';
}
if (Model::where('mobile', '=', Input::get('mobile'))->exists()) {
$errorMsgs['primary_mobile'] = 'mobile already exists';
}
if (Model::where('pri_email', '=', Input::get('primary_email'))->exists()) {
$errorMsgs['primary_email'] = 'Primary email already exists';
}
if(count($errorMsgs)) {
return redirect()->back()->withErrors($errorMsgs);
}
return view('someview');
}
// Blade
@if(count($errors))
<div class="alert alert-danger">
<ul>
@foreach ($errors as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
One more detail, with your if/elseif
use, it will always stop going through on the first match therefore always a maximum of one $errorMsg
. I have changed it to a number of if
statements as this will provide the opportunity to obtain an array of errors.
Upvotes: 3