我遵循了一个教程,只是为了深入了解表单主题。
我构建了一个Form类:application / forms / BugReportForm.php 我添加到我的bootstrap.php(在它未使用之前)
protected function _InitAutoload()
{
$autoLoader = Zend_Loader_Autoloader::getInstance();
$resourceLoader= new Zend_Loader_Autoloader_Resource(array(
'basePath' => APPLICATION_PATH,
'namespace' => '',
'resourceTypes' => array(
'form' => array(
'path' => 'forms/',
'namespace' => 'Form_',
)
),
));
//return it ao sthat istcan stored in the bootstrap
return $autoLoader;
}
我还构建了我的表单/ BugReportForm.php
我的BugController.php看起来像这样:
<?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;
}
我的application.ini
[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
phpSettings.date.timezone = "Europe/Berlin"
resources.db.adapter = PDO_MYSQL
resources.db.params.host = localhost
resources.db.params.username = root
resources.db.params.password =
resources.db.params.dbname = TQM
resources.db.params.charset = "utf8"
resources.db.params.driver_options.1002 = "SET NAMES utf8"
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/"
resources.view.doctype = "XHTML1_STRICT"
我收到此错误:在......中找不到类'Form_BugReportForm'
有什么问题,我认为bootstrap不起作用或命名空间不知道?
Folderstructure
目前我不使用虚拟主机。
在$ frmBugReport = new Application_Form_BugReportForm()中更改类调用后出现错误;
hier,例如另一个非常小的形式
<?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
}
}
?>
并从控制器中执行操作(添加):
$form = new Application_Form_Hierarchie();
我尝试了另一个可能性(来自书籍教程)来学习如何使用自己的表单。我想我应该放弃这种情况,然后回到简单的方式。
答案 0 :(得分:1)
问题可能来自您的应用程序中指定的错误类名。在使用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;
}
}
Zend_Form目录和文件名:
Zend_Form
的zend框架中的默认名称空间为表单,它将指向名为表单的文件夹。Form_
yourFormName.php
文件。这将是您的Form类文件。yourFormName.php
内创建一个类Form_yourFormName.php
yourFormName.php:
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();
希望这会对你有所帮助。