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 шт):
В метод test надо передавать Request, ты передаешь результат метода all(), который возвращает массив
Очевидно потому что TestRequest - это не Request.
Простым языком у вас написано что контроллер А в методе test принимает у себя на входе объекты типа TestRequest.
Затем в контроллере Б вы пытаетесь воткнуть в метод test объект Request, а это уже не одно и тоже.
Решение какое: Либо измените метод beta на
public function beta(TestRequest $request, A $a)
{
dd($a->test($request));
}
Либо пишите свой интерфейс...