Symfony4 - изменить один параметр в URL после отправки формы - PullRequest
0 голосов
/ 11 октября 2018

У меня есть маршрут, который выглядит следующим образом - маршрут / {параметр}, и мне нужно изменить параметр после отправки формы.

Я пытался использовать redirectToRoute, но он создал новый URL вместе с некоторыми другими параметрамичто форма прошла, что я не хочу.

Поэтому я хотел бы спросить вас, есть ли способ перенаправить на новый URL-адрес с единственным параметром, который я выбрал, выберите в форме.

Большое спасибо за ваши ответы.

РЕДАКТИРОВАТЬ:

Я собираюсь поделиться более актуальной информацией.Вот так выглядит мой контроллер формы:

$form = $this->createFormBuilder()
    ->setMethod("get")
    ->add('category', ChoiceType::class, [
        'choices' => [
            'Všechny kategorie' => 'vsechny-kategorie',
            'Automobilový průmysl' => 'automobilovy-prumysl',
            'Stavebnictví' => 'stavebnictvi',
            'Elektronika a elektrotechnika' => 'elektronika-a-elektrotechnika',
            'Gastronomie' => 'gastronomie',
            'Lesnictví' => 'lesnictvi',
            'Potravinářský průmysl' => 'potravinarsky-prumysl',
            'IT technologie' => 'it-technologie',
            'Logistika' => 'logistika',
            'Strojírenství' => 'strojirenstvi',
            'Zdravotnictví' => 'zdravotnictvi'
        ],
        'label' => 'Kategorie:'
    ])
    ->add('send', SubmitType::class, ['label' => 'Test'])
    ->getForm();

$form->handleRequest($request);

if($form->isSubmitted() && $form->isValid()) {
    $data = $form->getData();
    $category = $data['category'];

    return $this->redirectToRoute('jobs', [
        'jobs' => $pagination,
        'categoryForm' => $form->createView(),
        'category' => $category,
    ]);
}

Ответы [ 2 ]

0 голосов
/ 12 октября 2018

Вы можете попробовать это:

if($form->isSubmitted() && $form->isValid()) {
    $data = $form->getData();
    $category = $data['category'];

    return $this->redirectToRoute('route', [
         'parameter' => $form->getData()->getCategory()
     ]);

}

return $this->redirectToRoute('jobs', [
    'jobs' => $pagination,
    'categoryForm' => $form->createView(),
  ]);
0 голосов
/ 11 октября 2018

Вы должны иметь возможность использовать redirectToRoute, но обязательно передайте параметр, который вы пытаетесь динамически установить в виде массива:

// in your controller action:
return $this->redirectToRoute('post_form_route', ['parameter' => $parameter]);

Если это не работает для вас, я быДважды проверьте определения маршрута и убедитесь, что имя маршрута и ожидаемые параметры URL переданы правильно.

Документация по перенаправлению в контроллере

...