1

如何重定向到另一个操作,并在新操作中填写表单字段?

我有一个动作,我想调用 redirect() 类似的东西:

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

哪个应该重定向到我的 Search 操作,并且该操作中的表单应该填写 last_name 参数。该操作的代码如下:

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

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

我为重定向()的参数所做的任何尝试都没有奏效。Search[] 参数总是以某种方式弄乱,并且不会填充表单。

4

2 回答 2

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)

希望对您有所帮助或至少给您一些想法。

于 2011-04-29T22:14:59.410 回答
0

试试这个解决方案

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

于 2011-04-29T03:48:26.143 回答