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

Symfony1 Symfony-重定向到填写表单值的操作,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) {

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

我有一个操作,我想调用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]”

我尝试过的参数重定向()都不起作用。搜索[]参数总是以某种方式弄乱,无法填充表单。

试试看


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

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

希望这能对你有所帮助,或者至少能给你一些想法。

是的!非常感谢。我以前没有见过generateUrl()方法。在Symfony中创建带有路由的URL比框架中的任何东西都更适合我。