Это был очень удобный подход.
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)
Вы также можете использовать / test / {ObjectEntity} напрямую без ParamConverter, когда дело доходит до id.




Так же, как вы это делали на Symfony3 с ParamConverter. SensioFrameworkExtraBundle не является устаревшим.
Это определенно устарело! github.com/sensiolabs/SensioFrameworkExtraBundle/blob/v5.5.1 /… :)
Только определенный параметр устарел. Не весь комплект, как вы предлагаете.
Начиная с 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» здесь)).
Что мешает вам использовать один и тот же код?