4 votes

Méthode Laravel DELETE avec corps de la demande

J'ai essayé d'ajouter un FormRequest avec des règles et un message à ma méthode de suppression, mais la requête revient vide et les règles échouent à chaque fois.

Est-il possible d'obtenir les données de la demande dans une méthode de suppression ?

Voici ma classe de demande :

use App\Http\Requests\Request;

class DeleteRequest extends Request
{
    /**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'staff_id' => ['required', 'exists:users,uid'],
            'reason' => ['required', 'string'],
        ];
    }

    /**
     * Get custom messages for validator errors.
     *
     * @return array
     */
    public function messages()
    {
        return [
            'staff_id.required' => staticText('errors.staff_id.required'),
            'staff_id.exists' => staticText('errors.staff_id.exists'),
            'reason.required' => staticText('errors.reason.required'),
            'reason.string' => staticText('errors.reason.string'),
        ];
    }
}

Et le contrôleur :

/**
 * Handle the 'code' delete request.
 *
 * @param integer $id            The id of the code to fetch.
 * @param DeleteRequest $request The request to handle the data.
 * @return response
 */
public function deleteCode($id, DeleteRequest $request)
{
    dd($request->all());
}

8voto

Sepehr Lajevardi Points 7165

Même si la spécification HTTP/1.1 n'indique pas explicitement que les requêtes DELETE ne doivent pas avoir de corps d'entité, certaines implémentations ignorent complètement le corps qui contient vos données, par exemple certaines versions de Jetty et Tomcat. D'autre part, certains clients ne supportent pas non plus l'envoi de ce corps.

Pensez-y comme un GET demande . En avez-vous vu avec des données de formulaire ? DELETE Les demandes sont presque les mêmes.

Vous pouvez lire beaucoup de choses sur le sujet. Commencez ici :
Alternatives RESTful au corps de la requête DELETE

Il semble que tu veuilles modifier l'état de la ressource plutôt que de la détruire. La suppression douce n'est pas une suppression et nécessite donc soit une fonction PUT o un PATCH qui prennent toutes deux en charge les corps d'entités. Si la suppression douce n'est pas le cas, vous effectuez deux opérations en un seul appel.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X