【问题标题】:Symfony - Redirect to action with form values filled inSymfony - 重定向到填写表单值的操作
【发布时间】:2011-04-29 00:33:50
【问题描述】:

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

我有一个动作,我想调用 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 的名称格式为“Search[%s]”。

我没有为redirect() 的参数尝试过任何工作。 Search[] 参数总是以某种方式弄乱,不会填充表单。

【问题讨论】:

    标签: symfony1 symfony-1.4 symfony-forms


    【解决方案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]=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 比框架中的其他任何东西都更适合我。
    【解决方案2】:

    试试this solution

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-17
      • 2017-01-28
      • 1970-01-01
      • 2023-01-12
      相关资源
      最近更新 更多