Symfony от 3.4 до 4.2 аналог класса @ParamConverter?

Это был очень удобный подход.

  use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
    ....     
        /**
         * @Route("/test/{id_object}", name = "test")
         * @ParamConverter("ObjectEntity", class = "Bundle:ObjectEntity", options = {"id" = "id_object"})
         */
        public function editTest(ObjectEntity $ObjectEntity, Request $request) {
    .....

    }

Как теперь сделать преобразование параметров? (Symfony 4)

Что мешает вам использовать один и тот же код?

Nico Haase 15.01.2019 09:33

Вы также можете использовать / test / {ObjectEntity} напрямую без ParamConverter, когда дело доходит до id.

Eakethet 15.01.2019 09:41
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
2
401
2

Ответы 2

Так же, как вы это делали на Symfony3 с ParamConverter. SensioFrameworkExtraBundle не является устаревшим.

Это определенно устарело! github.com/sensiolabs/SensioFrameworkExtraBundle/blob/v5.5.1‌ /… :)

tftd 11.11.2019 03:09

Только определенный параметр устарел. Не весь комплект, как вы предлагаете.

emix 16.11.2019 09:28

Начиная с Symfony 4.2, чтобы использовать ParamConverter, вы не должны использовать аннотацию @ParamConverter, а должны напрямую ссылаться на подсказку типа вашей сущности.

Так

use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
.....
    /**
     * @Route("/test/{id_object}", name = "test")
     * @ParamConverter("ObjectEntity", class = "Bundle:ObjectEntity", options = {"id" = "id_object"})
     */
    public function editTest(ObjectEntity $ObjectEntity, Request $request) {
.....

}

становится

/**
* @Route("/test/{id}", name = "test")
*/
public function editTest(ObjectEntity $obj, Request $req) {
    ....
    //A query is automatically runs to find the ObjectEntity which corresponds with the id sent in the Route
    //so $obj is the ObjectEntity whose $id property matches the id value in the Route, else if id value in the Route doesn't match with the ObjectEntity's id, you will have a 404 page.
}

Важно: параметр «id» в маршруте («test / {id}») должен быть одним из свойств ObjectEntity (поэтому используйте то же имя («id» здесь)).

Другие вопросы по теме