我有一个用于更新和插入数据的zend_form。 我希望它有不同的sumbit标签,但它似乎不起作用。 我的表格:
class Staff_Form extends Zend_Form
{
public function init()
{
$this->setAction('')
->setMethod('post');
$firstname = new Zend_Form_Element_Text('firstname');
$firstname->setLabel('firstname')->setRequired(true);
$submit = new Zend_Form_Element_Submit('submit');
$submit->setName('insert');
$this->addElements(array(
$firstname,
$submit
));
}
}
现在我希望这可行:
//in controller
$form = new My_Form();
$form->getElement('submit')->setName('update');
但它给出了一个致命的错误: 致命错误:在.....中的非对象上调用成员函数setName() 所以我试过了:
$first = $form->getElement('firstname');
var_dump($first);
echo 'html break';
$submit = $form->getElement('submit');
var_dump($submit);
die();
看来$ submit为NULL
我做错了什么?
答案 0 :(得分:2)
在您的代码中某处确实应该输入错误,我只是测试了以下哪个有效:
class Application_Form_Test extends Zend_Form
{
public function init()
{
$sub = new Zend_Form_Element_Submit('submit');
$sub->setLabel('Submit Me');
$this->addElement($sub);
}
}
//controller - It works
$form = new Application_Form_Test();
$sub = $form->getElement('submit');
$sub->setName('wahahahar');
答案 1 :(得分:1)
您可以在设置表单时传递提交值。
// form
class App_Form_Something extends Zend_From {
protected $submitName
public function init() {
$this->addElement('submit',$this->submitName, array(
'label' => $this->submitName
));
public function setSubmitName($submitName) {
$this->submitName = $submitName;
}
}
然后在您的控制器中
$form = new App_Form_Something(array('submitName' => 'Update or something'));
我经常使用这种技术来传递某些数据库对象的Id,以便它们可以自动填充等。
祝你好运