Laravel Auth FormRequest works when accepting JSON, fails when accepting form data

258 views Asked by At

This is very strange. I have an endpoint that accepts a PUT request.

namespace App\Http\Requests;
use Dingo\Api\Http\FormRequest;
class UpdateTestRequest extends FormRequest
{
    
    public function authorize()
    {
        return true // guaranteed to work
    }

    public function rules()
    {
        return [
          'is_invited' => 'required|boolean',
          'is_span_invited' => 'required|boolean',
        ];
    }
}

When I make the request in insomnia, it works fine when accepting a JSON payload.enter image description here

However, changing to type Multipart form data and PUT'ing again - the UpdateTestRequest is run again but it fails. Laravel doesn't seem to see the values in is_invited nor is_span_invited. Doesn't matter is the expected value is a string, int etc.

Very strange.

enter image description here

2

There are 2 answers

0
Ronodip Basak On

I think true is being parsed as string by laravel backend. Did you try sending 0 and 1 instead?

0
Simon On

Use _method="PUT" in request body and POST. https://laravel.com/docs/9.x/routing#form-method-spoofing