میخواهیم پیامهای خطا را در بالای صفحه نشان دهیم و انجام آن با لاراول و بلید بسیار آسان است:
@if(!empty($errors->first()))
<div class="row col-lg-12">
<div class="alert alert-danger">
<span>{{ $errors->first() }}</span>
</div>
</div>
@endif
هر زمان که با خطایی دوباره کاربر را به سایت خود هدایت کنیم، میدانیم که صفحه به دلیل الگوی پایه قادر است پیام را به درستی در بالا نشان دهد.
با این حال، اگر این کار را انجام دهید و سپس فرم اعتبار سنجی را تنظیم کنید، فقط اولین پیام خطا را در بالای صفحه مشاهده خواهید کرد. ما میتوانیم همه پیامها را در متغیر خطاها تعریف کنیم، اما به جای هر فیلد باز هم خطاهای فرم را در بالای صفحه نشان میدهد. برای جلوگیری از این امر، میتوانیم از بستههای پیام در درخواست فرم لاراول استفاده کنیم.
پیامهای اعتبار سنجی خود را روی یک بسته پیام جداگانه تنظیم کنید
1 - درخواست فرم پایه
یک BaseFormRequest ایجاد کنید و آن را توسط فرمهای خود گسترش دهید.
use Illuminate\Foundation\Http\FormRequest;
class BaseFormRequest extends FormRequest {
protected $errorBag = 'form';
}
2 - یک کامپوننت بلید برای پیامهای هر فیلد تنظیم کنید
در اینجا ما از ویژگی $errors->form برای مطابقت با مقدار errorBag تنظیم شده در مرحله 1 استفاده میکنیم. ما همچنین از یک متغیر به نام field استفاده میکنیم و هر زمان که از این کامپوننت استفاده کنیم باید تنظیم شود.
@if($errors->form->first($field))
{!! $errors->form->first($field, '<p><span class="text-warning">:message</span></p>') !!}
@endif
3 – از کامپوننت در زیر فیلدها استفاده کنید
هنگام تعریف فیلد در فرم خود، حتما کامپوننت ایجاد شده در مرحله 2 را وارد کنید و متغیر فیلد را با همان نام زمینه خود به آن بدهید.
<div class="form-group">
<label>{{ __('What is the subject of this ticket?') }}</label>
<input type="text" name="title" class="form-control">
@include('layouts.components.alert.field', ['field' => 'title'])
</div>
نتیجه گیری
حال وقتی قانون درخواست فرم ناموفق بود، بسته پیام را روی فرم تنظیم میکند. اکنون میتوانیم خطاهای نشان داده شده در بالا را با استفاده از روش withErrors() و همچنین پیامهای مربوط به هر زمینه را با درخواست فرم نمایش دهیم.
دیدگاه و پرسش
در حال دریافت نظرات از سرور، لطفا منتظر بمانید
در حال دریافت نظرات از سرور، لطفا منتظر بمانید