Autour de Laravel

Discussion autour de l'optimisation des ModelRequest

Avatar de Seeryos
Seeryos

Bonsoir à tous,

J'aimerais échanger avec vous sur la meilleure façon d'utiliser les Requests et les validator. Prenons le cas d'une API qui va comporter de nombreuses méthodes pour un controller donné, UserController, avec les CRUD classiques : store, show, update, delete.

Maintenant ajoutons les méthodes follow, search et timeline si on compte faire un réseau social.

Au niveau de mes routes je vais avoir :

En PATCH : update et follow. Et là où se trouve mon souci c'est que ma request UserRequest j'ai ceci

    public function rules()
    {
        $method = $this->method();
        if (null !== $this->get('_method', null)) {
            $method = $this->get('_method');
        }

        $this->offsetUnset('_method');

        $this->rules = [];

        switch (strtoupper($method)) {
            case 'DELETE':
            case 'GET':
                ...
                break;
            case 'POST':
                ...
                break;
            case 'PUT':
                ...
                break;
            case 'PATCH':
                 $this->rules = [
                    ...
                ];
                break;
            default:
                return false;
                break;
        }

        return $this->rules;    
    }

Et du coup, dans la méthode PATCH je vais avoir les règles pour valider la méthode update qui est totalement différente de la méthode follow. Si j'ai mes éléments en required ça pose un souci. Du coup, jusqu'à présent je créais un validator dans la méthode follow du style :

    // Vous noterez que je n'ai pas utilisé mon UserRequest du coup :)
    public function follow(Request $request){
        
        $validator = Validator::make($request->all(), $rules, $messages);

        if ($validator->fails()) {
            return response()->json(['success' => false, 'errors' => $validator->errors()->all()], 422);
        }
        
        ...
    }

Mais du coup je me dis que c'est relativement moche ! J'aimerais profiter de la class UserRequest. Du coup je m'interroge.

Dois-je faire plus FormRequest en fonction des méthodes de mon contrôleur ? Ou existe-t-il encore une autre solution ?

Merci et belle soirée à tous !

EDIT : Me suis planté dans le nom du sujet et je peux pas l'éditer ! Zut !

Posté il y a 5 mois
Avatar de bestmomo
bestmomo

Salut,

Te complique pas la vie, fais plusieurs FormRequest.

Posté il y a 5 mois
Avatar de Seeryos
Seeryos

Merci :)

Posté il y a 5 mois

Vous ne pouvez pas répondre à ce sujet.