所以我想在一个页面上处理两个表单,我遇到了一些问题;我有一个名为'contact'的模块,这里是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正确提交,我可以看到我在表单中所做的错误等,如果它是正确的,它被正确地重定向。但是当我提交loginForm时,这是错误:
传递给sfForm :: bind()的参数1必须是一个数组,字符串给出:在这一行
$loginForm->bind($request->getParameter($loginForm->getName()));
为什么?
答案 0 :(得分:1)
是的,你可以。
为您的按钮添加name
属性(即登录和注册),并将您的操作修改为:
if ($request->hasParameter("login")) {
// handle login
}
elseif ($request->hasParameter("register")) {
// handle register
}