⚖️Form Request - Validations

ვალიდაციები უნდა იყოს გაკეთებული Form Request-ებით.

Conventions

  1. Form Request-ის სახელი უნდა იყოს PascalCase ქეისით.

  2. Crud ოპერაციების შემთხვევაში უნდა იცავდნნე შემდეგ ფორმატს ActionModelRequest. მაგალითები:

    • StorePostRequest

    • UpdatePostRequest

    • DestroyPostRequest

  3. არა Crud ოპერაციების შემთხვევაშიც უნდა იცავდნენ მსგავს ფორმატს, სახელი უნდა იყოს ინტუიციური და აღწერდეს რა მეთოდისთვის არის გამოყენებული.

  4. ფორმ რექვესთის ცვლადს უნდა ერქვას $request

  5. კონტროლერის ერთი მეთოდი მხოლოდ 1 ცალ FormRequest-ს უნდა იყენებდეს.

  6. უნდა ჰქონდეთ Request სუფიქსი

  7. თუ კონკრეტულ მოდელზე ბევრი FormRequest იყრის თავს დავაჯგუფოთ ისინი შესაბამისი მოდელი სახელის მქონე subDirectory-ში.

php artisan make:request Model/StoreModelRequest აქ წინ "Model/"-ის დამატებით მარტივად დავაჯგუფებთ თავიდანვე ჩვენს ფორმ რექვესთებს. მაგალითად: php artisan make:request Post/StorePostRequest php artisan make:request Post/UpdatePostRequest php artisan make:request Comment/StoreCommentRequest php artisan make:request Comment/UpdateCommentRequest

კომპლექსური შემთხვევები

არის შემთხვევები, როდესაც ერთი მოთხოვნისას საჭიროა შეიქმნას და ბაზაში ჩაიწეროს რამოდენიმე მოდელის შესაბამისი მონაცემები. აქ პრობლემური ხდება ის რომ ამ მოდელებს საერთო სახელის მქონე თვისებები (properties) გააჩნდეთ. მაგალითად გვაქვს ორი ცხრილი, ფილმებისა და რეჟისორების და ორივეს გააჩნიათ შემდეგი საერთო თვისებები name, description. როგორ უნდა მოვიქცეთ ამ დროს რომ მივიღოთ სუფთა კოდი

GOOD - კარგი მიდგომა

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class StoreDirectorAndMovieRequest extends FormRequest
{
	public function rules()
	{
		return [
			'director.name' => 'required',
			'director.surname' => 'required',
			'director.description' => 'required',
			'movie.name' => 'required',
			'movie.description' => 'required',
			'movie.year' => 'required',
		];
	}
}

⚠️ BAD - ცუდი მიდგომა

აქ უკვე შეიმჩნევა კოდის მოცულობაში განსხვავება. რეალურ პროექებში საგრძნობლად მეტი კოდი იზოგება ვინაიდან თითოეულ მოდელს არა 3 არამედ 10-15 და გაცილებით მეტი თვისებაც შეიძლება ჰქონდეს

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;

class StoreDirectorAndMovieRequest extends FormRequest
{
	public function rules()
	{
		return [
			'director_name' => 'required',
			'director_surname' => 'required',
			'director_description' => 'required',
			'movie_name' => 'required',
			'movie_description' => 'required',
			'movie_year' => 'required',
		];
	}
}

Last updated