我尝试使用以下目录结构设置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
我哪里错了?
答案 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)
这是让以下事项全部统一/一致的问题:
如果您希望将表单放在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 /目录中。