Прежде всего: рассматривали ли вы возможность отправки двух форм в два разных действия? Таким образом, вы можете обрабатывать каждую форму отдельно в каждом действии. Это должно быть «лучшей практикой», если вы используете компонент Zend MVC.
Другой вариант — проверить значение кнопки отправки, которая будет включена в запрос, например.
<input type="submit" name="save" value="form1" />
// in PHP:
// $_POST["save"] will contain "form1"
<input type="submit" name="save" value="form2" />
// in PHP:
// $_POST["save"] will contain "form2"
Будьте осторожны, так как атрибут value
будет отображаться как метка кнопки.
Итак, возможно, вы хотите различать формы по разным именам кнопок отправки:
<input type="submit" name="save-form1" value="Submit" />
// in PHP:
// $_POST["save-form1"] will contain "Submit"
<input type="submit" name="save-form2" value="Submit" />
// in PHP:
// $_POST["save-form2"] will contain "Submit"
ИЗМЕНИТЬ:
Во время диалога комментариев между ОП и мной возможным решением кажется следующее:
class My_Form_Base extends Zend_Form
{
private static $_instanceCounter = 0;
public function __construct($options = null)
{
parent:: __construct($options);
self::$_instanceCounter++;
$this->addElement('hidden', 'form-id',
sprintf('form-%s-instance-%d', $this->_getFormType(), self::$_instanceCounter);
}
protected _getFormType()
{
return get_class($this);
}
}
class My_Form_Type1 extends My_Form_Base
{
public function init()
{
// more form initialization
}
}
class My_Form_Type2 extends My_Form_Base
{
public function init()
{
// more form initialization
}
}
person
Stefan Gehrig
schedule
23.07.2009