【问题标题】:How to retrieve a form from processFrom into an other action?如何从 processFrom 检索表单到其他操作?
【发布时间】:2013-04-03 15:58:05
【问题描述】:

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

可捕获的致命错误:传递给 domaineActions::executeAddDomaines() 的参数 2 必须是 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');
}

那我该怎么做呢?

谢谢你:)

【问题讨论】:

  • 你在其他地方调用 executeAddDomaines 吗?因为您的错误告诉您在没有第二个参数的情况下调用它。 this->executeAddDomaines($request) 而不是 $this->executeAddDomaines($request, $form);
  • 没有。好的,但是如果我这样做this->executeAddDomaines($request),我什么时候可以从我的第一个表单中检索我的日期?
  • 不能调用this->executeAddDomaines($request)第二个参数是必须的。
  • 如果我输入第二个参数 $form,我得到了错误
  • 您将第一个动作重定向到第二个动作。您将丢失重定向时的表单数据。

标签: php forms symfony1


【解决方案1】:

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

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

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

使用后,可以从请求中清除属性形式

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 2014-12-21
    • 2015-05-18
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多