Laravel 9 ошибка типов при обращении к методу (который используется Request) через фасады

Имеется контроллера A использующий Request:

use App\Http\Requests\TestRequest;

class A extends Controller {
    public function test(TestRequest $request)
    {
        return 'Yes';
    }
}

и контроллер B который пытается вызвать функцию test() из контроллера A;

class B extends Controller {
    public function beta(Request $request, A $a)
    {
        dd($a->test($request->all()));
    }
}

При попытке обращения к методу test() из контроллера A возвращается ошибка:

Argument #1 ($request) must be of type App\\Http\\Requests\\TestRequest, array given, called in C:\\Users\\User\\Desktop\\Project\\app\\Http\\Controllers\\BController.php on line 25

В самом Request никаких правил валидации я не описывал, используется laravel 9, почему возвращается эта ошибка?


Ответы (2 шт):

Автор решения: user1603128

В метод test надо передавать Request, ты передаешь результат метода all(), который возвращает массив

→ Ссылка
Автор решения: Yauhen Kib

Очевидно потому что TestRequest - это не Request.

Простым языком у вас написано что контроллер А в методе test принимает у себя на входе объекты типа TestRequest.

Затем в контроллере Б вы пытаетесь воткнуть в метод test объект Request, а это уже не одно и тоже.

Решение какое: Либо измените метод beta на

public function beta(TestRequest $request, A $a)
{
    dd($a->test($request));
}

Либо пишите свой интерфейс...

→ Ссылка