Symfony - перенаправление на действие с заполненными значениями формы - PullRequest
1 голос
/ 29 апреля 2011

Как я могу сделать перенаправление на другое действие и получить поля формы для заполнения в новом действии?

У меня есть действие, и я хочу вызвать redirect () что-то вроде:

$this->redirect('foo/search?Search[last_name]='.$this->form->getValue('last_name'));

Который должен перенаправить на мое действие «Поиск», и в форме этого действия должен быть указан параметр last_name. Это действие имеет следующий код:

public function executeSearch(sfWebRequest $request)
{
   $this->form = new SearchForm();
   $submission = $request->getParameter($this->form->getName());
   ...do stuff with $submission...

SearchForm имеет формат имени «Поиск [% s]».

Ничего из того, что я пробовал для параметра redirect (), не сработало. Параметры Search [] всегда каким-то образом портятся и не заполняют форму.

Ответы [ 2 ]

2 голосов
/ 30 апреля 2011

Я бы попытался заставить Symfony сгенерировать для вас URL на основе маршрута и параметров:

@search = a route for your search action in your routing.yml

$parameters = array of the parameters you want to pass

$url = $this->generateUrl('search', $parameters);
$this->redirect($url);

Массив параметров должен иметь следующий формат ...

'Search[something1]' => 'value1'
'Search[something2]' => 'value2'

... поэтому URL принимает их как:

?Search[something1]=value1&Search[something2]=value2

После этого вы сможете использовать ...

$this->form->bind($request->getParameter('Search'));
(for binding)

... и, возможно, даже ...

$this->form->setDefaults($request->getParameter('Search'));
(for populating for a template)

Надеюсь, что это помогает или, по крайней мере, дает вам некоторые идеи.

0 голосов
/ 29 апреля 2011

Попробуйте это решение .

Другой способ - сохранить данные для отправки в сеансе пользователя.

...