وقتی با لاراول کار میکنید، یکی از بخشهای مهمی که باید با آن آشنا شوید ساختار دایرکتوریها یا همان فولدرهای پروژه است. هر فولدر در لاراول نقش خاص خود را دارد و به شما کمک میکند تا برنامهتان را بهتر سازماندهی کنید. یکی از این فولدرها، دایرکتوری "Rules" است که شامل قوانین اعتبارسنجی سفارشی خواهد بود. این دایرکتوری کمک میکند تا همگی کلیدهای منطقی را در یک مکان داشته باشید و راحتتر بتوانید آنها را مدیریت کنید.
دایرکتوری "Rules" به صورت پیشفرض در ریشه فولدر "app" ایجاد نمیشود، به این معنا که باید زمانی که شما نیاز به ایجاد قوانین اعتبارسنجی سفارشی دارید، آن را خودتان بسازید. هدف این دایرکتوری این است که شما بتوانید تمامی قوانین اعتبارسنجی که تعریف میکنید را در قالب یک کلاس مدیریت کنید تا هم استفادهشان سادهتر شود و هم خوانایی کدتان افزایش یابد.
فرض کنید یک پروژه لاراول دارید که نیازمند اعتبارسنجیهای پیچیدهای برای ورود دادهها است. به جای اینکه تمامی این اعتبارسنجیها را در کنترلرها پیادهسازی و مدیریت کنید، میتوانید با استفاده از کلاسهای قوانین سفارشی درون دایرکتوری "Rules"، مدیریت بهتری داشته باشید.
در ادامه، مثالی از نحوه پیادهسازی یک قانون اعتبارسنجی سفارشی را مشاهده خواهید کرد. این مثال شامل ایجاد کلاس، پیادهسازی قانون اعتبارسنجی و استفاده از آن در یک فرم ورودی خواهد بود تا بهتر نشان دهد که چگونه میتوانید از قدرت این دایرکتوری بهرهمند شوید.
<?php
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
class Uppercase implements Rule
{
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
return strtoupper($value) === $value;
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'The :attribute must be uppercase.';
}
}
<?php
این خط نشان میدهد که کد PHP آغاز شده است.
namespace App\Rules;
فضای نام App\Rules
برای کلاس تعریفشده تعیین میشود.
use Illuminate\Contracts\Validation\Rule;
این خط قرارداد Rule
لاراول را وارد میکند که باید توسط کلاس اعتبارسنجی پیادهسازی شود.
class Uppercase implements Rule
ایجاد یک کلاس با نام Uppercase
که قرارداد Rule
را پیادهسازی میکند و مسئول اعتبارسنجی دادهها به صورت حروف بزرگ است.
public function passes($attribute, $value)
این متد وظیفه دارد بررسی کند که آیا مقدار داده شده حروف بزرگ است یا خیر و true
یا false
برمیگرداند.
public function message()
متدی که پیامی مناسب برای زمانی که اعتبارسنجی شکست میخورد برمیگرداند.