2012-01-06 86 views
1

所以我想在一个页面上处理两种表单,并且我有一些问题需要处理;我有一个名为“接触”模块,这里是indexSucces.php在一个页面中处理两种不同的表单

<div id="registerForm"> 
    <form action="<?php echo url_for('contact'); ?>" method="post" id="loginForm">     


     <?php foreach ($loginForm as $widget): ?>            
      <?php if(!$widget->isHidden()) { ?>    
        <?php echo $widget->renderRow(); ?> 
      <?php } else { ?> 
       <?php echo $widget->render() ?> 
      <?php } ?> 
     <?php endforeach; ?>  
     <br/><input type="submit" id="loginSubmit" class="btn primary" value="<?php echo __('Envoyer'); ?>" /> 
    </form> 
</div> 


<div id="registerForm"> 
    <form action="<?php echo url_for('contact'); ?>" method="post" id="registerForm">     


     <?php foreach ($registerForm as $widget): ?>             
      <?php if(!$widget->isHidden()) { ?>    
        <?php echo $widget->renderRow(); ?> 
      <?php } else { ?> 
       <?php echo $widget->render() ?> 
      <?php } ?> 
     <?php endforeach; ?>  
     <br/><input type="submit" id="registerSubmit" class="btn primary" value="<?php echo __('Envoyer'); ?>" /> 
    </form> 
</div> 

是否可以处理在单个动作页面?我需要知道如何去做,我从昨天开始就陷入困境。例如,当我想提交第一个表单时,它想要提交第二个表单。

有人能为我提供一个例子吗?我可以发布我的sh * *操作页面,如果你想看看我是如何处理这个问题的。

在此先感谢!

编辑:

I made this code according to your advice : 

public function executeIndex(sfWebRequest $request) 
{ 

$this->loginForm = new loginForm(); 
$this->registerForm = new registerForm(); 

$this->processForm($request, $this->loginForm, $this->registerForm); 



} 

public function processForm(sfWebRequest $request, sfForm $loginForm, sfForm $registerForm) 
{ 
    if($request->hasParameter('login')) 
    { 
     if($request->isMethod('post')) 
     { 
      $loginForm->bind($request->getParameter($loginForm->getName())); 
      if($loginForm->isValid()) 
      { 
       $this->redirect('payement'); 
      } 
     } 
    } elseif ($request->hasParameter('register')) 
    { 
     if($request->isMethod('post')) 
     { 
      $registerForm->bind($request->getParameter($registerForm->getName())); 
      if($registerForm->isValid()) 
      { 
       $this->redirect('payement'); 
      } 
     } 
    } 
} 

的registerForm正确提交,我可以看到我已经在形式等作出的错误,如果它是正确的,这是正确的重定向。但是,当我提交登录表单,这里是错误:传递给sfForm ::绑定

参数1()必须是一个数组,字符串中给定:在这条线

$loginForm->bind($request->getParameter($loginForm->getName())); 

为什么?

+0

请注意,你不应该有一个页面上的多个元素使用相同的ID。 ID必须是唯一的 – ManseUK 2012-01-06 11:34:25

+0

啊,我看到了,这是一个错误。感谢您的建议。 – h1ghfive 2012-01-06 12:20:34

回答

0

是的,你可以。

添加name属性的按钮(即登录和注册),并修改你的行动:

if ($request->hasParameter("login")) { 
    // handle login 
} 
elseif ($request->hasParameter("register")) { 
    // handle register 
} 
+0

谢谢你的回答,但现在我有一个奇怪的错误。 – h1ghfive 2012-01-06 11:23:27

+0

什么样的错误? – Maerlyn 2012-01-06 11:24:47

+0

传递给sfForm :: bind()的参数1必须是一个数组,字符串给出:在这一行上 $ loginForm-> bind($ request-> getParameter($ loginForm-> getName())); 为什么? – h1ghfive 2012-01-06 11:28:48

相关问题