У меня есть маршрут, который выглядит так - route / {параметр}, и мне нужно изменить параметр после отправки формы.
Я попытался использовать redirectToRoute, но он создал новый URL вместе с некоторыми другими параметрами, которые передала форма, которые мне не нужны.
Поэтому я хотел бы спросить вас, есть ли способ перенаправить на новый URL-адрес с единственным параметром, который я выбираю с помощью select в форме.
Большое спасибо за ваши ответы.
Обновлено:
Поделюсь более актуальной информацией. Вот так выглядит мой контроллер для формы:
$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,
]);
}
@DylanPierce Я делаю фильтрацию по списку. Фильтрация работает нормально, но мне нужно написать имя категории, которая используется в качестве фильтра в URL-адресе, чтобы она выглядела, например, так: domain.com/list/category
$category - это строка или объект?
Это строка.




Вы должны иметь возможность использовать redirectToRoute, но не забудьте передать параметр, который вы пытаетесь динамически установить в виде массива:
// in your controller action:
return $this->redirectToRoute('post_form_route', ['parameter' => $parameter]);
Если это не сработает для вас, я бы дважды проверил определения ваших маршрутов и убедился, что имя вашего маршрута и ожидаемые параметры URL-адреса переданы правильно.
Документация по перенаправлению в контроллере
Проблема в том, что он возвращает URL-адрес, который длиннее, чем все символы, доступные для этого комментария. Вот как у меня код: return $this->redirectToRoute('jobs', [ 'jobs' => $pagination, 'categoryForm' => $form->createView(), 'category' => $category ]);
Трудно сказать, но я бы предположил, что один из параметров URL-адреса, который вы передаете, является очень большим объектом, но вместо этого должен быть одним атрибутом или небольшим массивом.
Я передаю категорию параметра, и он находится в URL-адресе, как и должно быть, но затем он также передает всю информацию о форме в качестве параметра, имя формы, ее дочерние элементы, выбранное значение ... И это то, что я пытаюсь предотвратить (пока безуспешно).
вы можете попробовать это:
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(),
]);
Вы пытаетесь динамически изменить конечную точку формы до на действие POST или вы пытаетесь изменить перенаправление пользователя после, конечная точка обработала форму?