让Zend Form工作的问题

时间:2010-09-30 21:21:19

标签: zend-framework zend-form

我尝试使用以下目录结构设置zend站点:

application
  -configs
  -forms
  -modules
     -admin
     -default
        -controllers
           -IndexController.php
        -forms
           -Testform.php
        -layouts
        -modules
        -views

然后在我的IndexController.php中,我有以下

公共职能contactMeAction()  {

    $request = $this->getRequest();
    $form    = new Form_Testform();

    if ($this->getRequest()->isPost()) {
        if ($form->isValid($request->getPost())) {

//处理东西

            return $this->_helper->redirector('index');
        }
    }

    $this->view->form = $form;

}

在Testform.php文件中我有

类Form_Testform扩展了Zend_Form {     公共函数init()     {  ......等

但是我收到以下错误:

致命错误:第22行/home/websites/test.local/public_html/prototype/application/modules/default/controllers/IndexController.php中找不到“Form_Testform”类

调用堆栈:     0.0004 325228 1. {main}()/ home/websites/test.local/public_html/prototype/public/index.php:0     0.1742 5351472 2. Zend_Application-> run()/home/websites/test.local/public_html/prototype/public/index.php:28     0.1742 5351472 3. Zend_Application_Bootstrap_Bootstrap-> run()/opt/ZendFramework-1.10.7/library/Zend/Application.php:366     0.1745 5351708 4. Zend_Controller_Front-> dispatch()/opt/ZendFramework-1.10.7/library/Zend/Application/Bootstrap/Bootstrap.php:97     0.1872 5707240 5. Zend_Controller_Dispatcher_Standard-> dispatch()/opt/ZendFramework-1.10.7/library/Zend/Controller/Front.php:954     0.2026 6016200 6. Zend_Controller_Action-> dispatch()/opt/ZendFramework-1.10.7/library/Zend/Controller/Dispatcher/Standard.php:295     0.2029 6020692 7. IndexController-> contactMeAction()/opt/ZendFramework-1.10.7/library/Zend/Controller/Action.php:513

我哪里错了?

3 个答案:

答案 0 :(得分:1)

基本上ZF没有找到它预期的形式。我认为您需要在application/forms中使用该表单,而不是像application/modules/default/forms那样使用该表单。

然后将其作为:

Application_Form_Testform extends Zend_Form

而不是

Form_Testform extends Zend_Form

--- --- EDIT

所以在application/forms中你有Testform.php文件 该文件看起来像:

class Application_Form_Testform extends Zend_Form { 
// form code
}

在您的控制器中(注意动作的命名... contactmeAction,而不是contactMeAction):

public function contactmeAction {
    $form = new Application_Form_Testform();
    $this->view->form = $form;
}

然后在您的视图中contactme.phtml

echo $this->form;

这应该有效。如果不是,我会检查你的行动名称中的拼写,大写,并确保事情的路径正确。

答案 1 :(得分:0)

这是让以下事项全部统一/一致的问题:

  1. 命名空间
  2. 类命名约定
  3. 班级档案位置
  4. 如果您希望将表单放在application/modules/default/forms文件夹中,请将课程命名为Default_Form_Testform

答案 2 :(得分:0)

检查名称/名称空间如gaoshan88所说(必须是“类Application_Form_Testform扩展Zend_Form”和“$ form = new Application_Form_Testform()”;)

检查您的application / configs / application.ini是否包含以下行:

resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.frontController.defaultModule = "default"
resources.modules[] = ""

最后创建一个空的Bootstrap.php文件并将其放在application / modules / default /目录中。