如何从processFrom检索表单到另一个动作?

时间:2013-04-11 12:41:46

标签: php forms symfony1

我想从我的第一个表单中检索数据到我的函数executeAddDomaines,以便将这些数据用于此函数调用的第二个表单中,但是当我在参数中给$ form这个函数时我有这个错误:

  

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

这是我的代码:

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');
}

那我怎么做呢?

谢谢:)

1 个答案:

答案 0 :(得分:0)

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

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

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');
    }

使用后,您可以从请求中清除属性表单