Контроллер с внедрением зависимостей не работает - PullRequest
0 голосов
/ 01 марта 2019

Когда я внедряю класс Request в Simfony, он хорошо работает для меня, но я только что создал класс с именем FormRequest, который «расширяется» из Request, я думал, что это будет работать, так как это все еще экземпляр Request, но это не так, Я получаю сообщение об ошибке.

Type error: Argument 1 passed to AppBundle\Http\Controllers\BlogController::validateAction() must be an instance of AppBundle\Http\FormRequest, instance of Symfony\Component\HttpFoundation\Request given, called in /var/www/html/api-erp/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/HttpKernel.php on line 151
Exception

Мой класс FormRequest.php:

namespace AppBundle\Http;

use Symfony\Component\HttpFoundation\{JsonResponse, Request, Response};

class FormRequest extends Request 
{

}

Контроллер BlogController.php:

<?php

namespace AppBundle\Http\Controllers;

use AppBundle\Http\FormRequest;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\{Request, JsonResponse};
use Symfony\Component\Routing\Annotation\Route;

class BlogController extends Controller
{
    /**
     * @Route("/blog", name="blog_index")
    */
    public function validateAction(FormRequest $request)
    {
        return new JsonResponse(['success' => true]);
    }
}

Версия Simfony: 3,4. *

1 Ответ

0 голосов
/ 01 марта 2019

Вы что-то упустили.

Symfony использует функцию ParamConverter для добавления запроса в ваше действие.Если вы хотите переопределить его, вы также должны создать собственный конвертер и использовать правильный приоритет в сервисе, чтобы избежать ошибки.

Дополнительные пояснения в документации Symfony

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...