Symfony / Routing: использование POST для исключения параметров запроса в URL - PullRequest
0 голосов
/ 06 апреля 2011

Я хочу передать идентификатор от одного действия к следующему действию, но я не хочу, чтобы его видели в URL. Есть ли способ это скрыть?

Используя Symfony, я создал страницу регистрации, URL которой должен быть /signup/done Когда форма будет обработана, я хочу перенаправить на действие signupSuccess и передать недавно созданный ID для будущего использования. Поэтому я использую ...

$this->redirect('@signup_done?id=' . $sign_up->getId());

Маршрутизация выглядит следующим образом:

signup_done:
  url:   /signup/done
  param: { module: SignUp, action: signupDone }

Я избежал: id в конце, потому что я не хочу его в URL. Но полученный URL-адрес /signup/done?id=1

В качестве эксперимента я попытался поместить это в шаблон.

<?php echo link_to('Sign-up again', '@signup_done?id=1', 'post=true') ?>

Даже при использовании post параметр запроса отображается в URL.

Необходимость: я хочу передать идентификатор от одного действия следующему действию, но я не хочу, чтобы его видели в URL. Есть ли способ это скрыть?

Ответы [ 2 ]

1 голос
/ 25 мая 2012

Я установил идентификатор в качестве параметра в запросе, используя $request->setParameter('id', $id), и он был доступен в следующем действии.

Это позволило сохранить URL чистым.

1 голос
/ 06 апреля 2011

Если вы хотите опубликовать, вам нужна форма. Еще в Symfony 1.2 были помощники, которых вы могли вызывать и делали вас просто такими - но они были удалены для продвижения продвижения хорошего кода.

В зависимости от того, как вы хотите, чтобы текст «Зарегистрироваться снова» выглядел, вы можете либо создать простую форму и кнопку отправки, либо создать ссылку, прикрепить прослушиватель кликов и создать там форму через JS, наконец, опубликовать сообщение это.

Любой параметр, который вы передаете маршруту в url_for, link_to, и в конечном итоге получается в параметрах get.

...