From 28d4002eedbcdb5f63102776fe2f45e094d3f223 Mon Sep 17 00:00:00 2001 From: mamazu <14860264+mamazu@users.noreply.github.com> Date: Mon, 8 Sep 2025 09:45:47 +0200 Subject: [PATCH 1/3] Migreate rest routing to symfony routing --- Controller/DynamicController.php | 3 +- Controller/FormController.php | 3 +- Controller/ListController.php | 3 +- Resources/config/routing_api.yaml | 69 +++++++++++++++++++++++++ Resources/config/routing_api.yml | 86 ++++++++++++++++++++++++------- UPGRADE.md | 19 +++++++ 6 files changed, 158 insertions(+), 25 deletions(-) create mode 100644 Resources/config/routing_api.yaml diff --git a/Controller/DynamicController.php b/Controller/DynamicController.php index ad7b3e4c..ac868259 100644 --- a/Controller/DynamicController.php +++ b/Controller/DynamicController.php @@ -13,7 +13,6 @@ use Doctrine\ORM\EntityManager; use FOS\RestBundle\Controller\ControllerTrait; -use FOS\RestBundle\Routing\ClassResourceInterface; use FOS\RestBundle\View\ViewHandler; use Sulu\Bundle\FormBundle\Entity\Dynamic; use Sulu\Bundle\FormBundle\Entity\Form; @@ -30,7 +29,7 @@ /** * Controller to create dynamic form entries list. */ -class DynamicController implements ClassResourceInterface +class DynamicController { use ControllerTrait; diff --git a/Controller/FormController.php b/Controller/FormController.php index b5e7ff2b..38105059 100644 --- a/Controller/FormController.php +++ b/Controller/FormController.php @@ -11,7 +11,6 @@ namespace Sulu\Bundle\FormBundle\Controller; -use FOS\RestBundle\Routing\ClassResourceInterface; use FOS\RestBundle\View\ViewHandlerInterface; use Sulu\Bundle\FormBundle\Admin\FormAdmin; use Sulu\Bundle\FormBundle\Entity\Form; @@ -31,7 +30,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; -class FormController extends AbstractRestController implements ClassResourceInterface, SecuredControllerInterface +class FormController extends AbstractRestController implements SecuredControllerInterface { /** * @var FormManager diff --git a/Controller/ListController.php b/Controller/ListController.php index 0f8a50b1..0fa075a7 100644 --- a/Controller/ListController.php +++ b/Controller/ListController.php @@ -11,7 +11,6 @@ namespace Sulu\Bundle\FormBundle\Controller; -use FOS\RestBundle\Routing\ClassResourceInterface; use FOS\RestBundle\View\ViewHandlerInterface; use Sulu\Bundle\FormBundle\Provider\ListProviderRegistry; use Sulu\Component\Rest\AbstractRestController; @@ -23,7 +22,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; -class ListController extends AbstractRestController implements ClassResourceInterface +class ListController extends AbstractRestController { /** * @var RestHelperInterface diff --git a/Resources/config/routing_api.yaml b/Resources/config/routing_api.yaml new file mode 100644 index 00000000..86187886 --- /dev/null +++ b/Resources/config/routing_api.yaml @@ -0,0 +1,69 @@ +sulu_form.get_lists_fields: + path: '/form/lists/fields.{_format}' + methods: GET + controller: 'sulu_form.list_controller::cgetFieldsAction' + format: json + requirements: { _format: json|csv } + +sulu_form.get_lists: + path: '/form/lists.{_format}' + methods: GET + controller: 'sulu_form.list_controller::cgetAction' + format: json + requirements: { _format: json|csv } + +sulu_form.get_forms: + path: '/forms.{_format}' + methods: GET + controller: 'sulu_form.form_controller::cgetAction' + format: json + requirements: { _format: json|csv } + +sulu_form.get_form: + path: '/forms/{id}.{_format}' + methods: GET + controller: 'sulu_form.form_controller::getAction' + format: json + requirements: { _format: json|csv } + +sulu_form.post_form: + path: '/forms.{_format}' + methods: POST + controller: 'sulu_form.form_controller::postAction' + format: json + requirements: { _format: json|csv } + +sulu_form.put_form: + path: '/forms/{id}.{_format}' + methods: PUT + controller: 'sulu_form.form_controller::putAction' + format: json + requirements: { _format: json|csv } + +sulu_form.delete_form: + path: '/forms/{id}.{_format}' + methods: DELETE + controller: 'sulu_form.form_controller::deleteAction' + format: json + requirements: { _format: json|csv } + +sulu_form.post_form_trigger: + path: '/forms/{id}.{_format}' + methods: POST + controller: 'sulu_form.form_controller::postTriggerAction' + format: json + requirements: { _format: json|csv } + +sulu_form.get_dynamics: + path: '/form/dynamics.{_format}' + methods: GET + controller: 'sulu_form.dynamic_controller::cgetAction' + format: json + requirements: { _format: json|csv } + +sulu_form.delete_dynamic: + path: '/form/dynamics/{id}.{_format}' + methods: DELETE + controller: 'sulu_form.dynamic_controller::deleteAction' + format: json + requirements: { _format: json|csv } diff --git a/Resources/config/routing_api.yml b/Resources/config/routing_api.yml index c2f24769..36bda99e 100644 --- a/Resources/config/routing_api.yml +++ b/Resources/config/routing_api.yml @@ -1,23 +1,71 @@ -sulu_form.list: - type: rest - resource: sulu_form.list_controller - prefix: form - name_prefix: sulu_form. +# Deprecated use the routing.yaml file -sulu_form.forms: - type: rest - resource: sulu_form.form_controller - name_prefix: sulu_form. +sulu_form.get_lists_fields: + path: '/form/lists/fields.{_format}' + methods: GET + controller: 'sulu_form.list_controller::cgetFieldsAction' + format: json + requirements: { _format: json|csv } + +sulu_form.get_lists: + path: '/form/lists.{_format}' + methods: GET + controller: 'sulu_form.list_controller::cgetAction' + format: json + requirements: { _format: json|csv } + +sulu_form.get_forms: + path: '/forms.{_format}' + methods: GET + controller: 'sulu_form.form_controller::cgetAction' + format: json + requirements: { _format: json|csv } + +sulu_form.get_form: + path: '/forms/{id}.{_format}' + methods: GET + controller: 'sulu_form.form_controller::getAction' + format: json + requirements: { _format: json|csv } + +sulu_form.post_form: + path: '/forms.{_format}' + methods: POST + controller: 'sulu_form.form_controller::postAction' + format: json + requirements: { _format: json|csv } + +sulu_form.put_form: + path: '/forms/{id}.{_format}' + methods: PUT + controller: 'sulu_form.form_controller::putAction' + format: json + requirements: { _format: json|csv } + +sulu_form.delete_form: + path: '/forms/{id}.{_format}' + methods: DELETE + controller: 'sulu_form.form_controller::deleteAction' + format: json + requirements: { _format: json|csv } sulu_form.post_form_trigger: - path: /forms/{id}.{_format} + path: '/forms/{id}.{_format}' methods: POST - defaults: - _controller: sulu_form.form_controller::postTriggerAction - _format: json - -sulu_form.dynamic: - type: rest - resource: sulu_form.dynamic_controller - prefix: form - name_prefix: sulu_form. + controller: 'sulu_form.form_controller::postTriggerAction' + format: json + requirements: { _format: json|csv } + +sulu_form.get_dynamics: + path: '/form/dynamics.{_format}' + methods: GET + controller: 'sulu_form.dynamic_controller::cgetAction' + format: json + requirements: { _format: json|csv } + +sulu_form.delete_dynamic: + path: '/form/dynamics/{id}.{_format}' + methods: DELETE + controller: 'sulu_form.dynamic_controller::deleteAction' + format: json + requirements: { _format: json|csv } diff --git a/UPGRADE.md b/UPGRADE.md index b5f20bd1..ff37a264 100644 --- a/UPGRADE.md +++ b/UPGRADE.md @@ -1,5 +1,24 @@ # Upgrade +## 2.6.0 + +### Deprecate usage of fos rest routing + +We are no longer considering the [fos rest routing](https://github.com/handcraftedinthealps/RestRoutingBundle) as a best practice. +All bundles should use the Symfony routing system instead. + +Inside your `config/routes/sulu_admin.yaml` you can remove the fos rest routing configuration. +First, remove all instances of `type: rest` and also replace `.yml` with `.yaml`: + +```diff +# config/routes/sulu_admin.yaml` + sulu_form_api: +- type: rest +- resource: "@SuluFormBundle/Resources/config/routing_api.yml" ++ resource: "@SuluFormBundle/Resources/config/routing_api.yaml" + prefix: /admin/api +``` + ## 2.5.3 ### Deprecate attribute max on AttachmentType From 3accba84f0d910f0100f2ce5ff9679e111e77631 Mon Sep 17 00:00:00 2001 From: mamazu <14860264+mamazu@users.noreply.github.com> Date: Fri, 7 Nov 2025 14:59:18 +0100 Subject: [PATCH 2/3] Reverting changes in classes --- Controller/DynamicController.php | 3 +- Controller/FormController.php | 3 +- Controller/ListController.php | 3 +- Resources/config/routing_api.yml | 86 +++++++------------------------- 4 files changed, 25 insertions(+), 70 deletions(-) diff --git a/Controller/DynamicController.php b/Controller/DynamicController.php index ac868259..ad7b3e4c 100644 --- a/Controller/DynamicController.php +++ b/Controller/DynamicController.php @@ -13,6 +13,7 @@ use Doctrine\ORM\EntityManager; use FOS\RestBundle\Controller\ControllerTrait; +use FOS\RestBundle\Routing\ClassResourceInterface; use FOS\RestBundle\View\ViewHandler; use Sulu\Bundle\FormBundle\Entity\Dynamic; use Sulu\Bundle\FormBundle\Entity\Form; @@ -29,7 +30,7 @@ /** * Controller to create dynamic form entries list. */ -class DynamicController +class DynamicController implements ClassResourceInterface { use ControllerTrait; diff --git a/Controller/FormController.php b/Controller/FormController.php index 38105059..b5e7ff2b 100644 --- a/Controller/FormController.php +++ b/Controller/FormController.php @@ -11,6 +11,7 @@ namespace Sulu\Bundle\FormBundle\Controller; +use FOS\RestBundle\Routing\ClassResourceInterface; use FOS\RestBundle\View\ViewHandlerInterface; use Sulu\Bundle\FormBundle\Admin\FormAdmin; use Sulu\Bundle\FormBundle\Entity\Form; @@ -30,7 +31,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; -class FormController extends AbstractRestController implements SecuredControllerInterface +class FormController extends AbstractRestController implements ClassResourceInterface, SecuredControllerInterface { /** * @var FormManager diff --git a/Controller/ListController.php b/Controller/ListController.php index 0fa075a7..0f8a50b1 100644 --- a/Controller/ListController.php +++ b/Controller/ListController.php @@ -11,6 +11,7 @@ namespace Sulu\Bundle\FormBundle\Controller; +use FOS\RestBundle\Routing\ClassResourceInterface; use FOS\RestBundle\View\ViewHandlerInterface; use Sulu\Bundle\FormBundle\Provider\ListProviderRegistry; use Sulu\Component\Rest\AbstractRestController; @@ -22,7 +23,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; -class ListController extends AbstractRestController +class ListController extends AbstractRestController implements ClassResourceInterface { /** * @var RestHelperInterface diff --git a/Resources/config/routing_api.yml b/Resources/config/routing_api.yml index 36bda99e..c2f24769 100644 --- a/Resources/config/routing_api.yml +++ b/Resources/config/routing_api.yml @@ -1,71 +1,23 @@ -# Deprecated use the routing.yaml file +sulu_form.list: + type: rest + resource: sulu_form.list_controller + prefix: form + name_prefix: sulu_form. -sulu_form.get_lists_fields: - path: '/form/lists/fields.{_format}' - methods: GET - controller: 'sulu_form.list_controller::cgetFieldsAction' - format: json - requirements: { _format: json|csv } - -sulu_form.get_lists: - path: '/form/lists.{_format}' - methods: GET - controller: 'sulu_form.list_controller::cgetAction' - format: json - requirements: { _format: json|csv } - -sulu_form.get_forms: - path: '/forms.{_format}' - methods: GET - controller: 'sulu_form.form_controller::cgetAction' - format: json - requirements: { _format: json|csv } - -sulu_form.get_form: - path: '/forms/{id}.{_format}' - methods: GET - controller: 'sulu_form.form_controller::getAction' - format: json - requirements: { _format: json|csv } - -sulu_form.post_form: - path: '/forms.{_format}' - methods: POST - controller: 'sulu_form.form_controller::postAction' - format: json - requirements: { _format: json|csv } - -sulu_form.put_form: - path: '/forms/{id}.{_format}' - methods: PUT - controller: 'sulu_form.form_controller::putAction' - format: json - requirements: { _format: json|csv } - -sulu_form.delete_form: - path: '/forms/{id}.{_format}' - methods: DELETE - controller: 'sulu_form.form_controller::deleteAction' - format: json - requirements: { _format: json|csv } +sulu_form.forms: + type: rest + resource: sulu_form.form_controller + name_prefix: sulu_form. sulu_form.post_form_trigger: - path: '/forms/{id}.{_format}' + path: /forms/{id}.{_format} methods: POST - controller: 'sulu_form.form_controller::postTriggerAction' - format: json - requirements: { _format: json|csv } - -sulu_form.get_dynamics: - path: '/form/dynamics.{_format}' - methods: GET - controller: 'sulu_form.dynamic_controller::cgetAction' - format: json - requirements: { _format: json|csv } - -sulu_form.delete_dynamic: - path: '/form/dynamics/{id}.{_format}' - methods: DELETE - controller: 'sulu_form.dynamic_controller::deleteAction' - format: json - requirements: { _format: json|csv } + defaults: + _controller: sulu_form.form_controller::postTriggerAction + _format: json + +sulu_form.dynamic: + type: rest + resource: sulu_form.dynamic_controller + prefix: form + name_prefix: sulu_form. From 4a34f58de6163edb4f505895a764252d70390365 Mon Sep 17 00:00:00 2001 From: Alexander Schranz Date: Mon, 10 Nov 2025 14:46:35 +0100 Subject: [PATCH 3/3] Change version to 2.5.9 and deprecate fos rest routing Updated version number and deprecated fos rest routing. --- UPGRADE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UPGRADE.md b/UPGRADE.md index ff37a264..5d9c02a5 100644 --- a/UPGRADE.md +++ b/UPGRADE.md @@ -1,6 +1,6 @@ # Upgrade -## 2.6.0 +## 2.5.9 ### Deprecate usage of fos rest routing