#symfony1 #symfony-1.4 #symfony-forms
#symfony1 #symfony-1.4 #symfony-forms
Вопрос:
Как я могу перенаправить на другое действие и заставить поля формы быть заполненными в новом действии?
У меня есть действие, и я хочу вызвать 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...
Форма поиска имеет формат имени ‘Search[%s]’.
Ничего из того, что я пробовал для параметра redirect(), не сработало. Параметры Search[] всегда каким-то образом перепутываются и не будут заполнять форму.
Ответ №1:
Я бы попытался заставить 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]=value1amp;Search[something2]=value2
После этого вы сможете использовать…
$this->form->bind($request->getParameter('Search'));
(for binding)
… и, возможно, даже…
$this->form->setDefaults($request->getParameter('Search'));
(for populating for a template)
Надеюсь, это поможет или, по крайней мере, подскажет вам несколько идей.
Комментарии:
1. Да! Спасибо. Я раньше не видел этот метод generateUrl (). Создание URL-адресов с маршрутизацией в Symfony дает мне больше возможностей, чем что-либо еще в фреймворке.
Ответ №2:
Попробуйте это решение.
Другой метод заключается в сохранении данных отправки в сеансе пользователя.