diff --git a/src/bundle/Controller/UserSettingsController.php b/src/bundle/Controller/UserSettingsController.php index bb73cd5..600444e 100644 --- a/src/bundle/Controller/UserSettingsController.php +++ b/src/bundle/Controller/UserSettingsController.php @@ -13,11 +13,13 @@ use Ibexa\User\Form\Data\UserSettingUpdateData; use Ibexa\User\Form\Factory\FormFactory; use Ibexa\User\Form\SubmitHandler; +use Ibexa\User\Form\Type\UserSettingUpdateType; use Ibexa\User\UserSetting\UserSettingService; use Ibexa\User\UserSetting\ValueDefinitionRegistry; use Ibexa\User\View\UserSettings\ListView; use Ibexa\User\View\UserSettings\UpdateView; use JMS\TranslationBundle\Annotation\Desc; +use Symfony\Component\Form\Button; use Symfony\Component\HttpFoundation\RedirectResponse; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -90,7 +92,7 @@ public function updateAction(Request $request, UpdateView $view) $form->handleRequest($request); if ($form->isSubmitted()) { - $result = $this->submitHandler->handle($form, function (UserSettingUpdateData $data) { + $result = $this->submitHandler->handle($form, function (UserSettingUpdateData $data) use ($form) { foreach ($data->getValues() as $identifier => $value) { $this->userSettingService->setUserSetting($identifier, (string)$value['value']); } @@ -102,6 +104,14 @@ public function updateAction(Request $request, UpdateView $view) 'ibexa_user_settings' ); + if ($form->getClickedButton() instanceof Button + && $form->getClickedButton()->getName() === UserSettingUpdateType::BTN_UPDATE_AND_EDIT + ) { + return $this->redirectToRoute('ibexa.user_settings.update', [ + 'identifier' => $data->getIdentifier(), + ]); + } + return new RedirectResponse($this->generateUrl('ibexa.user_settings.list')); }); diff --git a/src/lib/Form/Type/UserSettingUpdateType.php b/src/lib/Form/Type/UserSettingUpdateType.php index d3e55ef..5b9a31e 100644 --- a/src/lib/Form/Type/UserSettingUpdateType.php +++ b/src/lib/Form/Type/UserSettingUpdateType.php @@ -20,6 +20,8 @@ class UserSettingUpdateType extends AbstractType { + public const BTN_UPDATE_AND_EDIT = 'update_and_edit'; + /** @var \Ibexa\User\UserSetting\FormMapperRegistry */ protected $formMapperRegistry; @@ -68,6 +70,7 @@ public function buildForm(FormBuilderInterface $builder, array $options) $builder->add($sub); } $builder->add('update', SubmitType::class, []); + $builder->add(self::BTN_UPDATE_AND_EDIT, SubmitType::class); } /**