Symfony - 重定向到填写了表单值的操作

时间:2011-04-29 00:33:51

标签: 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...

SearchForm的名称格式为“搜索[%s]”。

我没有尝试过重定向()的参数。 Search []参数总是以某种方式搞乱,并且不会填充表单。

2 个答案:

答案 0 :(得分:2)

我会尝试让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)

希望有助于或至少为您提供一些想法。

答案 1 :(得分:0)

尝试this solution

另一种方法是将提交数据存储在用户会话中。