مارک پلاس

تکنولوژی نوین اینترنتی

نمایش خطاهای فرم لاراول

دسته‌بندی‌ها

نمایش خطاهای فرم لاراول

📜 نمایش خطاهای فرم در لاراول


در لاراول، یکی از مهم‌ترین ویژگی‌های موجود برای مدیریت و نمایش خطاهای فرم‌ها، استفاده از سیستم اعتبارسنجی (Validation) است. با استفاده از این سیستم، می‌توانید به‌راحتی ورودی‌های کاربر را بررسی کرده و در صورت وجود خطا، پیام‌های مناسب را به‌کاربر نمایش دهید.

در این مقاله، نحوه استفاده از سیستم اعتبارسنجی و نمایش خطاهای فرم در لاراول را به‌طور کامل بررسی خواهیم کرد.


1. 🛠 اعتبارسنجی در لاراول

در لاراول، می‌توانید اعتبارسنجی داده‌های ورودی را با استفاده از کلاس‌های مختلف انجام دهید. ساده‌ترین راه استفاده از متد validate() است که می‌توانید آن را در کنترلرها به‌کار ببرید.

1.1. استفاده از متد validate

در این روش، هنگام ارسال فرم، لاراول به‌طور خودکار داده‌های ورودی را اعتبارسنجی کرده و در صورت وجود خطا، آن‌ها را به‌صورت آرایه‌ای از خطاها در دسترس شما قرار می‌دهد.

مثال کنترلر:

php
use Illuminate\Http\Request; public function store(Request $request) { // اعتبارسنجی ورودی‌های فرم $validated = $request->validate([ 'name' => 'required|max:255', 'email' => 'required|email|unique:users,email', 'password' => 'required|min:8|confirmed', ]); // در صورتی که اعتبارسنجی موفق باشد، اطلاعات در دیتابیس ذخیره می‌شود User::create($validated); return redirect()->route('home')->with('success', 'User created successfully.'); }

در این مثال، لاراول به‌طور خودکار بررسی می‌کند که آیا فیلدهای name، email و password به‌درستی پر شده‌اند یا خیر و در صورت وجود خطا، آن‌ها را به‌صورت آرایه به ویو ارسال می‌کند.


2. 💡 نمایش خطاهای فرم در ویو

بعد از اعتبارسنجی درخواست، اگر خطایی وجود داشته باشد، می‌توانید آن‌ها را در ویو نمایش دهید. لاراول به‌طور پیش‌فرض خطاهای فرم را در متغیری به نام errors قرار می‌دهد که می‌توانید از آن در ویو استفاده کنید.

2.1. نمایش خطاهای عمومی

برای نمایش خطاهای فرم در ویو، از دستورات شرطی @error و @foreach استفاده می‌شود.

مثال نمایش خطا در Blade Template:

php
<form method="POST" action="{{ route('user.store') }}"> @csrf <div> <label for="name">Name</label> <input type="text" name="name" value="{{ old('name') }}"> @error('name') <div class="text-red-500">{{ $message }}</div> @enderror </div> <div> <label for="email">Email</label> <input type="email" name="email" value="{{ old('email') }}"> @error('email') <div class="text-red-500">{{ $message }}</div> @enderror </div> <div> <label for="password">Password</label> <input type="password" name="password"> @error('password') <div class="text-red-500">{{ $message }}</div> @enderror </div> <button type="submit">Submit</button> </form>

در این مثال، خطاها برای هر فیلد به‌طور جداگانه نمایش داده می‌شوند. از @error('field_name') برای هر فیلد استفاده می‌شود تا در صورت وجود خطا، پیام مربوطه نمایش داده شود.

2.2. نمایش تمام خطاها به‌صورت یکجا

اگر بخواهید تمام خطاهای موجود را به‌صورت یکجا نمایش دهید، می‌توانید از آرایه errors برای نمایش تمام پیام‌های خطا استفاده کنید.

مثال نمایش تمام خطاها:

php
@if ($errors->any()) <div class="alert alert-danger"> <ul> @foreach ($errors->all() as $error) <li>{{ $error }}</li> @endforeach </ul> </div> @endif

در اینجا، تمام خطاها به‌صورت یک لیست نمایش داده می‌شوند.


3. 🔄 حفظ مقادیر ورودی بعد از ارسال فرم

برای جلوگیری از از دست رفتن داده‌های واردشده توسط کاربر بعد از ارسال فرم (در صورت وجود خطا)، می‌توانید از دستور old() استفاده کنید که مقدار ورودی‌های قبلی فرم را باز می‌گرداند.

مثال:

php
<input type="text" name="name" value="{{ old('name') }}">

این دستور باعث می‌شود که اگر فرم با خطا ارسال شود، مقادیر واردشده توسط کاربر در فیلدها حفظ شوند.


4. 🛡 استفاده از پیام‌های سفارشی

در لاراول، شما می‌توانید پیام‌های خطای پیش‌فرض را سفارشی کنید. برای این کار، کافی است در متد validate یا در فایل زبان، پیام‌های خاص خود را تعریف کنید.

4.1. تعریف پیام‌های سفارشی در کنترلر

در هنگام استفاده از متد validate، می‌توانید پیام‌های سفارشی برای هر فیلد و قانون اعتبارسنجی تعیین کنید.

مثال:

php
public function store(Request $request) { $validated = $request->validate([ 'name' => 'required|max:255', 'email' => 'required|email|unique:users,email', 'password' => 'required|min:8|confirmed', ], [ 'name.required' => 'نام باید پر شود.', 'email.required' => 'لطفاً ایمیل خود را وارد کنید.', 'password.min' => 'رمز عبور باید حداقل ۸ کاراکتر باشد.', ]); // ادامه فرایند }

4.2. تعریف پیام‌های سفارشی در فایل زبان

شما همچنین می‌توانید پیام‌های پیش‌فرض لاراول را در فایل‌های زبان (مانند resources/lang/fa/validation.php) سفارشی کنید.

مثال در فایل validation.php:

php
return [ 'required' => 'فیلد :attribute الزامی است.', 'email' => 'لطفاً یک ایمیل معتبر وارد کنید.', 'min' => [ 'string' => 'فیلد :attribute باید حداقل :min کاراکتر باشد.', ], ];

5. 📊 اعتبارسنجی پیچیده‌تر و استفاده از کلاس‌های فرم

برای اعتبارسنجی‌های پیچیده‌تر یا زمانی که نیاز به کدهای بیشتر دارید، می‌توانید از Form Request Validation استفاده کنید که به شما این امکان را می‌دهد که اعتبارسنجی‌ها را در کلاس‌های جداگانه قرار دهید.

5.1. ایجاد یک کلاس Form Request

برای ایجاد یک کلاس فرم درخواست، می‌توانید از دستور زیر استفاده کنید:

bash
php artisan make:request StoreUserRequest

در این کلاس می‌توانید قوانین اعتبارسنجی و پیام‌های سفارشی را تعریف کنید.

مثال کلاس درخواست:

php
namespace App\Http\Requests; use Illuminate\Foundation\Http\FormRequest; class StoreUserRequest extends FormRequest { public function authorize() { return true; // اگر لازم است که کاربر مجاز به ارسال فرم باشد } public function rules() { return [ 'name' => 'required|max:255', 'email' => 'required|email|unique:users,email', 'password' => 'required|min:8|confirmed', ]; } public function messages() { return [ 'name.required' => 'نام باید پر شود.', 'email.required' => 'لطفاً ایمیل خود را وارد کنید.', 'password.min' => 'رمز عبور باید حداقل ۸ کاراکتر باشد.', ]; } }

سپس در کنترلر خود می‌توانید از این کلاس درخواست به‌جای validate استفاده کنید:

php
public function store(StoreUserRequest $request) { User::create($request->validated()); return redirect()->route('home')->with('success', 'User created successfully.'); }

نتیجه‌گیری

در لاراول، سیستم اعتبارسنجی و نمایش خطاهای فرم بسیار قدرتمند و انعطاف‌پذیر است. با استفاده از متد validate(), @error, old(), و قابلیت سفارشی‌سازی پیام‌ها، شما می‌توانید تجربه‌ای عالی برای کاربر در فرم‌ها فراهم کنید. این سیستم به شما کمک می‌کند که به‌راحتی خطاهای ورودی کاربران را شناسایی و نمایش دهید.

محتوای مرتبط

پست‌های مرتبط