در این مقاله می خواهیم چگونگی ساختن validation سفارشی در لاراول، برای پروژه های طراحی سایت را به شما نشان دهیم. در این مثال می خواهیم سالهای المپیک را اعتبار سنجی کنیم:
حالا، اجازه دهید یک قانون اعتبارسنجی ایجاد کنیم که فقط می توانید سال بازی های المپیک را وارد کنید:
فرمان زیر را اجرا می کنیم:
php artisan make:rule OlympicYear
با این فرمان لاراول یک فایل تولید می کند.
app/Rules/OlympicYear.php:
namespace App\Rules;
use Illuminate\Contracts\Validation\Rule;
class OlympicYear implements Rule
{
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
//
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return 'The validation error message.';
}
}
در متد passes مقدار مورد نظر را به شکل زیر اعتبارسنجی می کنیم:
public function passes($attribute, $value)
{
return $value >= 1896 && $value <= date('Y') && $value % 4 == 0;
}
سپس پیام را به شکل زیر نمایش می دهیم:
public function message()
{
return ':attribute should be a year of Olympic Games';
}
در متد store در controller برای ذخیره داده به شکل زیر عمل می کنیم:
public function store(Request $request)
{
$this->validate($request, ['year' => new OlympicYear]);
}
در آرایه دوم باید rule class خود را new کنید:
