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

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



Solution 1:[1]

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

Solution 2:[2]

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

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Ronodip Basak
Solution 2 Simon