zendframework 框架的学习遇到的问题

在学习使用Zend_Framework时遇到了表单显示问题和错误,错误涉及构造函数名错误(两个下划线 '_construct' 应改为一个 '__construct')以及`addElement`方法拼写错误(应为`addElements`)。通过修正这两个错误,成功解决了问题并避免了'Zend_Form_Exception'。需要更多练习以熟悉Zend框架。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

今天在学习一个例子的时候,应用zend_from来实现表格无论如何也出不来,还报错,错误如下:

Fatal error: Call to a member function setLabel() on a non-object in XXX

我的代码是:

BookFrom 类的实现:

class BookForm extends Zend_Form
{
public function _construct($options=null)
{
parent::_construct($options);
$this->setName('book');
$name = new Zend_Form_Element_Text('name');
$name->setLabel('Name')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');

$author = new Zend_Form_Element_Text('author');
$author->setLabel('Author');
$author->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');

$isbn = new Zend_Form_Element_Text('isbn');
$isbn->setLabel('Isbn');
$isbn->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');

$id = new Zend_Form_Element_Hidden('id');
$submit = new Zend_Form_Element_Submit('submit');
$submit->setAttrib('id', 'submitbutton');
$this->addElements(array($id,$name,$author,$isbn,$submit));
}
}


调用BookForm类:

  function addbookAction()
    {
    $this->view->title = "Add new book";
    $form = new BookForm();
    $form->submit->setLabel('Add');  /***************报错提示的是这一行,无法找到对象**********************/
    $this->view->form = $form;
    }

经过查找,利用zend_debug::dump()函数输出$form实例,里边是空的,什么都没有,原来是在BookForm类定义的时候,构造函数打错了:

 function _construct($options=null)  //   construct前边是两个‘_’而不是一个‘_’
parent::_construct($options);//同上

应该改为:

 function __construct($options=null)  
parent::__construct($options)

这部分就可以了。

之后又出现一个错误如下:

Fatal error: Uncaught exception 'Zend_Form_Exception' with message 'Element must be specified by string or Zend_Form_Element instance' in D:\php\WWW\library\library\Zend\Form.php:1065 Stack trace: #0 D:\php\WWW\library\application\models\bookform.php(31): Zend_Form->addElement(Array) #1 D:\php\WWW\library\application\controllers\IndexController.php(23): BookForm->__construct() #2 D:\php\WWW\library\library\Zend\Controller\Action.php(516): IndexController->addbookAction() #3 D:\php\WWW\library\library\Zend\Controller\Dispatcher\Standard.php(308): Zend_Controller_Action->dispatch('addbookAction') #4 D:\php\WWW\library\library\Zend\Controller\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #5 D:\php\WWW\library\public\index.php(52): Zend_Controller_Front->dispatch() #6 {main} thrown in D:\php\WWW\library\library\Zend\Form.php on line 1065

看了一下是因为我的bookfrom类的添加元素函数打错了:

$this->addElement(array($id,$name,$author,$isbn,$submit));

这个函数应该是 addElements(array()); 少打了一个S.以后要多注意函数拼写,原因还是不熟悉一些zend框架提供的函数,需要多加练习

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值