Symfony 3.4 до 4.2 аналог класса @ParamConverter? - PullRequest
0 голосов
/ 15 января 2019

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

  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)

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Начиная с 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»)).

0 голосов
/ 15 января 2019

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

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