Directory Structure in Laravel: Exploring the Rules Directory

laravel directory structure rules guide
20 آبان 1403

وقتی با لاراول کار می‌کنید، یکی از بخش‌های مهمی که باید با آن آشنا شوید ساختار دایرکتوری‌ها یا همان فولدرهای پروژه است. هر فولدر در لاراول نقش خاص خود را دارد و به شما کمک می‌کند تا برنامه‌تان را بهتر سازماندهی کنید. یکی از این فولدرها، دایرکتوری "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()
متدی که پیامی مناسب برای زمانی که اعتبارسنجی شکست می‌خورد برمی‌گرداند.

سوالات متداول

؟

چطور می‌توان یک کلاس اعتبارسنجی سفارشی در لاراول نوشت؟

؟

دایرکتوری 'Rules' به صورت پیش‌فرض ساخته می‌شود؟

؟

چرا باید از دایرکتوری 'Rules' استفاده کنیم؟