如何从processFrom中检索表单到其他操作


How to retrieve a form from processFrom into an other action?

我想从我的第一个形式检索数据到我的函数executeAddDomaines使用这些到这个函数调用的第二个形式,但当我给$form参数到这个函数我有这个错误:

可捕获的致命错误:参数2传递给domaineActions::executeAddDomaines()必须是sfForm的实例,没有给出,在/home/web/extranet100p100.net/htdocs/lib/vendor/symfony/lib/action/sfActions.class.php第60行调用,并在/home/web/extranet100p100.net/htdocs/apps/backend/modules/domaine/actions/actions.class.php第206行定义

我的代码:

protected function processForm(sfWebRequest $request, sfForm $form)
{
$name = $form->getName();
$form->bind($request->getParameter($name), $request->getFiles($name));
if($form->isValid())
{
    if($form->isNew())
        {   
        $this->executeAddDomaines($request, $form);
        $this->redirect('@add_domaines');
         }
[...]
}
public function executeAddDomaines(sfWebRequest $request, sfForm $form)
{       
      $name = $form->getName();
      $params = $request->getParameter($name);
      $this->list_domaines = $params;

      $this->form = new AddDomainesForm();

      $this->setTemplate('listDomaines');
}

那我该怎么做呢?

谢谢你

您可以尝试在会话中保存表单数据,然后在第二次操作中获取它。

试试这个(我没有测试):

protected function processForm(sfWebRequest $request, sfForm $form)
    {
    $name = $form->getName();
    $form->bind($request->getParameter($name), $request->getFiles($name));
    if($form->isValid())
    {
        if($form->isNew())
            {   
            # Replaced
            $request->setAttribute("form", $form);
            $this->redirect('@add_domaines');
             }
    [...]
    }
    public function executeAddDomaines(sfWebRequest $request)
    {      
          # Added
          $form = $request->getAttribute("form");
          $name = $form->getName();
          $params = $request->getParameter($name);
          $this->list_domaines = $params;

          $this->form = new AddDomainesForm();

          $this->setTemplate('listDomaines');
    }

使用后,您可以从请求

中清除属性表单。
相关文章: