⚖️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-ში.

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

არის შემთხვევები, როდესაც ერთი მოთხოვნისას საჭიროა შეიქმნას და ბაზაში ჩაიწეროს რამოდენიმე მოდელის შესაბამისი მონაცემები. აქ პრობლემური ხდება ის რომ ამ მოდელებს საერთო სახელის მქონე თვისებები (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',
		];
	}
}

სამწუხაროდ, ამის შესაძლებლობა გვაქვს მხოლოდ როდესაც ჯავასკრიპტით იგზავნება მოცემულ ენდფოინთზე მონაცემები, და მითითებულია content-type application/json ჰედერი. ამიტომ როდესაც SPA აპლიკაცია გაქვთ (Single Page Application) და აქტიურად იყენებთ ჯავასკრიპტს მაშინ შეგეძლებათ ასეთი სუფთა კოდის დაწერა. როდესაც სტანდარტულად Form-ის Submit-შემდეგ ხდება მონაცემთა გამოგზავნა კარგი მიდგომით რაც გვიწერია ეგ აღარ გამოგვადგება. რადგან რექვესთის body ავტომატურად არ კონვერტირდება application/json ფორმატით.

Last updated