X

Règles de validation des dimensions d’image dans Laravel 5.3


Dans Laravel 5.3, nous avons une nouvelle option de validation : les dimensions de l’image pour les téléchargements d’images. La règle de validation s’appelle dimensionset vous pouvez lui transmettre les paramètres suivants :

  • min_width: Les images plus étroites que cette largeur de pixel seront rejetées
  • max_width: Les images plus larges que cette largeur de pixel seront rejetées
  • min_height: Les images plus courtes que cette hauteur de pixel seront rejetées
  • max_height: Les images plus hautes que cette hauteur de pixel seront rejetées
  • width: Les images qui ne correspondent pas exactement à cette largeur de pixel seront rejetées
  • height: Les images qui ne correspondent pas exactement à cette hauteur de pixel seront rejetées
  • ratio: Les images qui ne correspondent pas exactement à ce rapport (largeur/hauteur, exprimé en “largeur/hauteur”) seront rejetées

Vous pouvez combiner toutes les règles qui ont du sens ensemble. Jetons un coup d’œil à quelques exemples. Tout d’abord, configurons notre installation de base.

// routes file
Route::get("https://mattstauffer.com/", function () {
    return view('form');
});

Route::post("https://mattstauffer.com/", 'ImageController@postImage');
<!--form.blade.php-->
<form method="POST" enctype="multipart/form-data">
    <input type="file" name="avatar">
    <input type="submit">
</form>

Maintenant, faisons notre ImageController et jetez un oeil à quelques exemples de validations.

// ImageController
    public function postImage(Request $request)
    {
        $this->validate($request, [
             'avatar' => 'dimensions:min_width=250,min_height=500'
        ]);

        // or... 

        $this->validate($request, [
             'avatar' => 'dimensions:min_width=500,max_width=1500'
        ]);

        // or...

        $this->validate($request, [
             'avatar' => 'dimensions:width=100,height=100'
        ]);

        // or...

        // Ensures that the width of the image is 1.5x the height
        $this->validate($request, [
             'avatar' => 'dimensions:ratio=3/2'
        ]);
    }

C’est ça! Une chose de moins que vous devez gérer vous-même dans votre propre code.