Php 在引导中配置自动加载程序失败
我遵循一个教程只是为了更深入地了解表单主题 我构建了一个表单类:application/forms/BugReportForm.php 我在bootstrap.php中添加了(未使用之前) 我还构建了我的表单/BugReportForm.php My BugController.php如下所示:Php 在引导中配置自动加载程序失败,php,zend-framework,zend-form,Php,Zend Framework,Zend Form,我遵循一个教程只是为了更深入地了解表单主题 我构建了一个表单类:application/forms/BugReportForm.php 我在bootstrap.php中添加了(未使用之前) 我还构建了我的表单/BugReportForm.php My BugController.php如下所示: <?php class BugController extends Zend_Controller_Action { public function init() {
<?php
class BugController extends Zend_Controller_Action
{
public function init()
{
/* Initialize action controller here */
}
public function submitAction()
{
$frmBugReport = new Form_BugReport();
$frmBugReport = setAction('/bug/submit');
$frmBugReport = setMethod('post');
$this->view->form = $frmBugReport;
}
我得到这个错误:在…中找不到类'Form_BugReportForm'
有什么不对,我认为引导程序不起作用或者名称空间不知道
折叠结构
目前我不使用虚拟主机
在$frmBugReport=new Application_Form_BugReportForm()中更改我的类调用后出错
例如,另一种非常小的形式
<?php
// Formular wird angezeigt bei neue Ebene 1 und editieren
class Application_Form_Hierarchie extends Zend_Form
{
public function init()
{
$this->setName('Ebene1');
$this->setAttrib('enctype', 'multipart/form-data'); //Formular wird für Dateiuploads verwendet
$nr = new Zend_Form_Element_Hidden('nr');
$nr->addFilter('Int');
$ebene1 = new Zend_Form_Element_Text('ebene1');
$ebene1->setLabel('Ebene1')
->setRequired(true)
->addFilter('StripTags')
->addFilter('StringTrim')
->addValidator('NotEmpty');
$submit = new Zend_Form_Element_Submit('submit');
$submit->setAttrib('nr', 'submitbutton');
$this->addElements(array($nr, $ebene1, $submit)); //, $imagepreview
}
}
?>
我尝试了另一种可能性(来自书本教程)来学习如何使用自己的FormClass。我想我应该放弃Turial,回到简单的方法。问题可能来自应用程序中指定的错误类名。在使用zend from和models时,请务必遵守以下规则,这样您就不会有问题了: Bootstrap.php文件:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap{
protected function _initAutoload(){
$resourceLoader= new Zend_Application_Module_Autoloader(
array(
'namespace' => '',
'basePath' => APPLICATION_PATH
));
$resourceLoader->addResourceType('model', 'models/', 'Model');
$resourceLoader->addResourceType('form', 'forms/', 'Form');
return $resourceLoader;
}
}
class Form_yourFormName extends Zend_Form
{
public function init()
{
//your form codes goes here like creating form elements
}
}
Zend\u表单目录和文件名:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap{
protected function _initAutoload(){
$resourceLoader= new Zend_Application_Module_Autoloader(
array(
'namespace' => '',
'basePath' => APPLICATION_PATH
));
$resourceLoader->addResourceType('model', 'models/', 'Model');
$resourceLoader->addResourceType('form', 'forms/', 'Form');
return $resourceLoader;
}
}
class Form_yourFormName extends Zend_Form
{
public function init()
{
//your form codes goes here like creating form elements
}
}
zend_Form
的默认名称空间为Form,它将指向名为forms的文件夹form\uu
yourFormName.php
。这将是您的表单类文件yourFormName.php内部
创建一个类作为Form\u yourFormName.php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap{
protected function _initAutoload(){
$resourceLoader= new Zend_Application_Module_Autoloader(
array(
'namespace' => '',
'basePath' => APPLICATION_PATH
));
$resourceLoader->addResourceType('model', 'models/', 'Model');
$resourceLoader->addResourceType('form', 'forms/', 'Form');
return $resourceLoader;
}
}
class Form_yourFormName extends Zend_Form
{
public function init()
{
//your form codes goes here like creating form elements
}
}
然后在控制器中获取已定义表单类的实例:
class YourController extends Zend_Controller_Action
{
public function indexAction()
{
$form = new Form_yourFormName();
$this->view->form = $form;
}
}
编辑:对于您的案例,它应该是:
$frmBugReport = new Form_BugReportForm();
不是:
$frmBugReport = new Form_BugReport();
希望这对您有所帮助。请提供BugReportForm的代码。谢谢您的评论,在这里,类的头:class Form_BugReportForm扩展了Zend_Form/forms/BugReportForm.phSphere是错误:致命错误:在控制器的第15行的C:\wamp\www\cheyenne\application\controllers\BugController.php中找不到class'Form_BugReportForm':$frmburgreport=new Form_BugReportForm();你能给出你的应用程序的文件夹结构吗?您是否在使用virtualhost?是的,我已经在PostingTanks中输入了我的formclass的头:class Form_BugReportForm扩展了Zend_Form文件名是:/forms/BugReportForm.php此处实例化对象:$frmBugReport=new Form_BugReportForm();谢谢你的另一个想法我再次检查了每个名字,但我没有看到错误