Итак, я хочу обработать две формы на одной странице, и у меня есть некоторые проблемы, чтобы сделать это; У меня есть модуль с именем «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, вот ошибка:
Аргумент 1, передаваемый в sfForm :: bind (), должен быть массивом, строка которого указана: в этой строке
$loginForm->bind($request->getParameter($loginForm->getName()));
Почему?