如何重定向到另一个操作,并在新操作中填写表单字段?
我有一个动作,我想调用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 []参数总是以某种方式搞乱,并且不会填充表单。
答案 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)
另一种方法是将提交数据存储在用户会话中。