Php zend表单提交按钮
我正在用zend编写一个代码,从用户输入中捕获数据并将其保存在数据库中。我正在使用zend表单。要捕获的信息太多,因此我创建了另一个表单来填充其他数据…第一个表单工作正常,但当我按“下一步”将第一个表单提交到数据库,同时重定向到第二个表单时,我收到以下错误: 致命错误:在C:\xampp\htdocs\Gforms2\application\controllers\IndexController.php的第114行对非对象调用成员函数setLabel() 当我评论第二个表单的那一行时,用户只能“查看并输入信息”,提交按钮不可见。请帮助 这是我的表单、Indexcontroller和模型代码Php zend表单提交按钮,php,forms,zend-framework,Php,Forms,Zend Framework,我正在用zend编写一个代码,从用户输入中捕获数据并将其保存在数据库中。我正在使用zend表单。要捕获的信息太多,因此我创建了另一个表单来填充其他数据…第一个表单工作正常,但当我按“下一步”将第一个表单提交到数据库,同时重定向到第二个表单时,我收到以下错误: 致命错误:在C:\xampp\htdocs\Gforms2\application\controllers\IndexController.php的第114行对非对象调用成员函数setLabel() 当我评论第二个表单的那一行时,用户只能“
IndexController
<?php
class IndexController extends Zend_Controller_Action
{
public function init()
{
/* Initialize action controller here */
}
public function indexAction()
{
$organization_details = new Application_Model_DbTable_OrganizationDetails();
$this->view->organization_details= $organization_details->fetchAll();
}
public function addAction()
{
$form = new Application_Form_OrganizationDetails();
$form->submit->setLabel('Next');
$this->view->form = $form;
if ($this->getRequest()->isPost()) {
$formData = $this->getRequest()->getPost();
if ($form->isValid($formData)) {
$Organization_Name = $form->getValue('Organization_Name');
$Organization_Trading_Name = $form->getValue('Organization_Trading_Name');
$Region = $form->getValue('Region');
$City = $form->getValue('City');
$Physical_Address = $form->getValue('Physical_Address');
$Physical_code = $form->getValue('Physical_code');
$Postal_Address = $form->getValue('Postal_Address');
$Postal_code = $form->getValue('Postal_code');
$Telephone_Number = $form->getValue('Telephone_Number');
$Fax_Number = $form->getValue('Fax_Number');
$Cellular_Number = $form->getValue('Cellular_Number');
$Organization_Email = $form->getValue('Organization_Email');
$Organization_Website = $form->getValue('Organization_Website');
$organization_details = new Application_Model_DbTable_OrganizationDetails();
$organization_details->addOrganizationDetails($Organization_Name, $Organization_Trading_Name, $Region, $City, $Physical_Address, $Physical_code, $Postal_Address, $Postal_code, $Telephone_Number,$Fax_Number, $Cellular_Number, $Organization_Email, $Organization_Website);
$this->_helper->redirector('addform2');
} else {
$form->populate($formData);
}
}
}
public function editAction()
{
$form = new Application_Form_OrganizationDetails();
$form->submit->setLabel('save'); //can set it here also in forms
$this->view->form = $form;
if ($this->getRequest()->isPost()) {
$formData = $this->getRequest()->getPost();
if ($form->isValid($formData)) {
$id = (int)$form->getValue('id');
$Organization_Name = $form->getValue('Organization_Name');
$Organization_Trading_Name = $form->getValue('Organization_Trading_Name');
$Region = $form->getValue('Region');
$City = $form->getValue('City');
$Physical_Address = $form->getValue('Physical_Address');
$Physical_code = $form->getValue('Physical_code');
$Postal_Address = $form->getValue('Postal_Address');
$Postal_code = $form->getValue('Postal_code');
$Telephone_Number = $form->getValue('Telephone_Number');
$Fax_Number = $form->getValue('Fax_Number');
$Cellular_Number = $form->getValue('Cellular_Number');
$Organization_Email = $form->getValue('Organization_Email');
$Organization_Website = $form->getValue('Organization_Website');
$organization_details = new Application_Model_DbTable_OrganizationDetails();
$organization_details->updateOrganizationDetails($id, $Organization_Name, $Organization_Trading_Name, $Region, $City, $Physical_Address, $Physical_code, $Postal_Address, $Postal_code, $Telephone_Number,$Fax_Number, $Cellular_Number, $Organization_Email, $Organization_Website);
$this->_helper->redirector('index');
} else {
$form->populate($formData);
}
} else {
$id = $this->_getParam('id', 0);
if ($id > 0) {
$organization_details = new Application_Model_DbTable_OrganizationDetails();
$form->populate($organization_details->getOrganizationDetails($id));
}
}
}
public function deleteAction()
{
if ($this->getRequest()->isPost()) {
$del = $this->getRequest()->getPost('del');
if ($del == 'Yes') {
$id = $this->getRequest()->getPost('id');
$organization_details = new Application_Model_DbTable_OrganizationDetails();
$organization_details->deleteOrganizationDetails($id);
}
$this->_helper->redirector('index');
} else {
$id = $this->_getParam('id', 0);
$organization_details = new Application_Model_DbTable_OrganizationDetails();
$this->view->organization_details = $organization_details->getOrganizationDetails($id);
}
}
public function addform2Action()
{
$form = new Application_Form_PersonalDetails();
$form->submit2->setLabel('Next');
$this->view->form = $form;
if ($this->getRequest()->isPost()) {
$formData = $this->getRequest()->getPost();
if ($form->isValid($formData)) {
$First_Name = $form->getValue('First_Name');
$Last_Name = $form->getValue('Last_Name');
$Telephone_Number = $form->getValue('Telephone_Number');
$Fax_Number = $form->getValue('Fax_Number');
$Cellular_Number = $form->getValue('Cellular_Number');
$Email_Address = $form->getValue('Email_Address');
$Username= $form->getValue('Username');
$Password = $form->getValue('Password');
$Confirm_Password = $form->getValue('Confirm_Password');
$personaldetails= new Application_Model_DbTable_PersonalDetails();
$personaldetails->addform2PersonalDetails($First_Name, $Last_Name, $Telephone_Number,$Fax_Number, $Cellular_Number, $Email_Address, $Username, $Password, $Confirm_Password);
$this->_helper->redirector('index');
} else {
$form->populate($formData);
}
}
}
}
form1
<?php
class Application_Form_OrganizationDetails extends Zend_Form
{
public function init()
{
$this->setName('organization_details');
$id = new Zend_Form_Element_Hidden('id');
$id->addFilter('Int');
$Organization_Name = new Zend_Form_Element_Text('Organization_Name');
$Organization_Name->setLabel('Organization Name')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');
$Organization_Trading_Name = new Zend_Form_Element_Text('Organization_Trading_Name');
$Organization_Trading_Name->setLabel('Organization Trading Name')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');
$Region= new Zend_Form_Element_Select('Region');
$Region->setAttribs(array('style' => 'width: 150px;'));
$Region ->setLabel('Region')
->addMultiOptions(array(
'--Select One--'=>'--Select One--',
'City of Johannesburg'=>'City of Johannesburg',
'City of Tswane'=>'City of Tswane',
'Ekhurhuleni Metropolitian Municipality'=>'Ekhurhuleni Metropolitian Municipality',
'West Rand District Municipality'=>'West Rand District Municipality',
'Sedibeng District Municipality '=>'Sedibeng District Municipality',
));
$City = new Zend_Form_Element_Select('City');
$City->setAttribs(array('style' => 'width: 144px;'));
$City ->setLabel('City')
->addMultiOptions(array(
'Pretoria'=>'Pretoria',
'Gauteng'=>'Gauteng',
'Katlego'=>'Katlego',
));
$Physical_Address = new Zend_Form_Element_Text('Physical_Address');
$Physical_Address->setLabel('Physical Address')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');
$Physical_code = new Zend_Form_Element_Text('Physical_code');
$Physical_code->setLabel('Physical code')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('Digits');
$Postal_Address = new Zend_Form_Element_Text('Postal_Address');
$Postal_Address->setLabel('Postal Address')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');
$Postal_code = new Zend_Form_Element_Text('Postal_code');
$Postal_code->setLabel('Postal code')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('Digits');
$Telephone_Number = new Zend_Form_Element_Text('Telephone_Number');
$Telephone_Number->setLabel('Telephone Number')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('Digits');
$Fax_Number = new Zend_Form_Element_Text('Fax_Number');
$Fax_Number->setLabel('Fax Number')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('Digits');
$Cellular_Number = new Zend_Form_Element_Text('Cellular_Number');
$Cellular_Number->setLabel('Cellular Number')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('Digits');
$Organization_Email = new Zend_Form_Element_Text('Organization_Email');
$Organization_Email->setLabel('Organization Email')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('EmailAddress');
$Organization_Website = new Zend_Form_Element_Text('Organization_Website');
$Organization_Website->setLabel('Organization Website')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');
$submit = new Zend_Form_Element_Submit('submit');
$submit->setAttrib('id', 'submitbutton');
$this->addElements(array($id, $Organization_Name, $Organization_Trading_Name, $Region, $City, $Physical_Address, $Physical_code, $Postal_Address, $Postal_code, $Telephone_Number,$Fax_Number, $Cellular_Number, $Organization_Email, $Organization_Website, $submit));
}
}
form2
<?php
class Application_Form_PersonalDetails extends Zend_Form
{
public function init()
{
$this->setName('personaldetails');
$id = new Zend_Form_Element_Hidden('id');
$id->addFilter('Int');
$First_Name = new Zend_Form_Element_Text('First_Name');
$First_Name->setLabel('First Name')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');
$Last_Name = new Zend_Form_Element_Text('Last_Name');
$Last_Name->setLabel('Last Name')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');
$Telephone_Number = new Zend_Form_Element_Text('Telephone_Number');
$Telephone_Number->setLabel('Telephone Number')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('Digits');
$Fax_Number = new Zend_Form_Element_Text('Fax_Number');
$Fax_Number->setLabel('Fax Number')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('Digits');
$Cellular_Number = new Zend_Form_Element_Text('Cellular_Number');
$Cellular_Number->setLabel('Cellular Number')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('Digits');
$Email_Address = new Zend_Form_Element_Text('Email_Address');
$Email_Address->setLabel('Email Address')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('EmailAddress');
$Username = new Zend_Form_Element_Text('Username');
$Username->setLabel('Username')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');
$Password= new Zend_Form_Element_Text('Password');
$Password->setLabel('Password')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('Digits');
$Confirm_Password= new Zend_Form_Element_Text('Confirm_Password');
$Confirm_Password->setLabel('Confirm Password')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('Digits');
$submit2 = new Zend_Form_Element_Submit('submit');
$submit2->setAttrib('id', 'submitbutton');
$this->addElements(array($id, $First_Name, $Last_Name, $Telephone_Number,$Fax_Number, $Cellular_Number, $Email_Address, $Username, $Password, $Confirm_Password));
}
}
model for form1
<?php
class Application_Model_DbTable_OrganizationDetails extends Zend_Db_Table_Abstract
{
protected $_name = 'organization_details';
public function getOrganizationDetails($id)
{
$id = (int)$id;
$row = $this->fetchRow('id = ' . $id);
if (!$row) {
throw new Exception("Could not find row $id");
}
return $row->toArray();
}
public function addOrganizationDetails($Organization_Name, $Organization_Trading_Name, $Region, $City, $Physical_Address, $Physical_code, $Postal_Address, $Postal_code, $Telephone_Number,$Fax_Number, $Cellular_Number, $Organization_Email, $Organization_Website)
{
$data = array(
'Organization_Name'=> $Organization_Name,
'Organization_Trading_Name'=> $Organization_Trading_Name,
'Region'=> $Region,
'City'=> $City,
'Physical_Address'=> $Physical_Address,
'Physical_code'=> $Physical_code,
'Postal_Address'=> $Postal_Address,
'Postal_code'=> $Postal_code,
'Telephone_Number'=> $Telephone_Number,
'Fax_Number'=> $Fax_Number,
'Cellular_Number'=> $Cellular_Number,
'Organization_Email'=> $Organization_Email,
'Organization_Website'=> $Organization_Website,
);
$this->insert($data);
}
public function updateOrganizationDetails($id, $Organization_Name, $Organization_Trading_Name, $Region, $City, $Physical_Address, $Physical_code, $Postal_Address, $Postal_code, $Telephone_Number,$Fax_Number, $Cellular_Number, $Organization_Email, $Organization_Website)
{
$data = array(
'Organization_Name'=> $Organization_Name,
'Organization_Trading_Name'=> $Organization_Trading_Name,
'Region'=> $Region,
'City'=> $City,
'Physical_Address'=> $Physical_Address,
'Physical_code'=> $Physical_code,
'Postal_Address'=> $Postal_Address,
'Postal_code'=> $Postal_code,
'Telephone_Number'=> $Telephone_Number,
'Fax_Number'=> $Fax_Number,
'Cellular_Number'=> $Cellular_Number,
'Organization_Email'=> $Organization_Email,
'Organization_Website'=> $Organization_Website,
);
$this->update($data, 'id = '. (int)$id);
}
public function deleteOrganizationDetails($id)
{
$this->delete('id =' . (int)$id);
}
}
model for form2
<?php
class Application_Model_DbTable_PersonalDetails extends Zend_Db_Table_Abstract
{
protected $_name = 'personaldetails';
public function getPersonalDetails($id)
{
$id = (int)$id;
$row = $this->fetchRow('id = ' . $id);
if (!$row) {
throw new Exception("Could not find row $id");
}
return $row->toArray();
}
public function addform2PersonalDetails($First_Name, $Last_Name, $Telephone_Number,$Fax_Number, $Cellular_Number, $Email_Address, $Username,$Password, $Confirm_Password)
{
$data = array(
'First_Name'=> $First_Name,
'Last_Name'=> $Last_Name,
'Telephone_Number'=> $Telephone_Number,
'Fax_Number'=> $Fax_Number,
'Cellular_Number'=> $Cellular_Number,
'Email_Address'=> $Email_Address,
'Username'=> $Username,
'Password'=> $Password,
'Confirm_Password'=> $Confirm_Password,
);
$this->insert($data);
}
public function PersonalDetails($id, $First_Name, $Last_Name, $Telephone_Number,$Fax_Number, $Cellular_Number, $Email_Address, $Username,$Password, $Confirm_Password)
{
$data = array(
'First_Name'=> $First_Name,
'Last_Name'=> $Last_Name,
'Telephone_Number'=> $Telephone_Number,
'Fax_Number'=> $Fax_Number,
'Cellular_Number'=> $Cellular_Number,
'Email_Address'=> $Email_Address,
'Username'=> $Username,
'Password'=> $Password,
'Confirm_Password'=> $Confirm_Password,
);
$this->update($data, 'id = '. (int)$id);
}
public function PersonalDetails($id)
{
$this->delete('id =' . (int)$id);
}
}
IndexController
为什么不在表单中设置submit按钮的标签?我尝试了这次没有错误,但我的next按钮仍然没有出现。感谢您的帮助,我认为我需要在add elements$this->addElements(数组)中添加我的$submit($id、$First_Name、$Last_Name、$Telephone_Number、$Fax_Number、$Cellular_Number、$Email_Address、$Username、$Password、$Confirm_Password、$submit));