Php Zend表单自动加载
我在Zend framework 1中实现表单时遇到问题。我在application/forms/CustomForm.php中添加了表单,看起来是这样的Php Zend表单自动加载,php,zend-framework,Php,Zend Framework,我在Zend framework 1中实现表单时遇到问题。我在application/forms/CustomForm.php中添加了表单,看起来是这样的 class CustomForm extends Zend_Form { public function init() { $this->setMethod('post'); $id = $this->createElement('hidden','id'); $f
class CustomForm extends Zend_Form
{
public function init()
{
$this->setMethod('post');
$id = $this->createElement('hidden','id');
$firstname = $this->createElement('text','firstname');
$firstname->setLabel('First Name:')
->setAttrib('size',50);
$lastname = $this->createElement('text','lastname');
$lastname->setLabel('Last Name:')
->setAttrib('size',50);
$username = $this->createElement('text','username');
$username->setLabel('Username:')
->setAttrib('size',50);
$email = $this->createElement('text','email');
$email->setLabel('Email:')
->setAttrib('size',50);
$password = $this->createElement('password','password');
$password->setLabel('Password:')
->setAttrib('size',50);
$password2 = $this->createElement('password','password2');
$password2->setLabel('Confirm Password::')
->setAttrib('size',50);
$register = $this->createElement('submit','register');
$register->setLabel("Register")
->setIgnore(true);
$this->addElements(array(
$firstname,
$lastname,
$username,
$email,
$password,
$password2,
$id,
$register
));
}
}
php中的include path如下所示
set_include_path(implode(PATH_SEPARATOR, array(
realpath(APPLICATION_PATH . '/../library'),
realpath(APPLICATION_PATH . '/../application'),
realpath(APPLICATION_PATH . '/../application/forms'),
)));
但是当我调用
$form=newcustomform()代码>,在usercontroller.php中,我在第250行的/var/www/demoapp/application/controllers/usercontroller.php中找不到类“致命错误:在autoloader中注册表单类不是更好吗?”?
您也可以在application/Bootstrap.php文件中执行此操作,例如:
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initResourceAutoloader()
{
$autoLoader = new Zend_Loader_Autoloader_Resource(array(
'basePath' => dirname(__FILE__),
'namespace' => 'App'
));
$autoLoader->addResourceType('form' , 'forms' , 'Form');'Grid');
return $autoLoader;
}
var_dump(realpath(APPLICATION_PATH./../APPLICATION/forms))代码>并再次检查它是否符合您的预期。如果路径正确,我将得到以下字符串(37)“/var/www/demoapp/application/forms”哦,等等,我知道发生了什么。您正在尝试自动加载它。set_include_path设置可用的路径,但您仍必须包含/需要文件。您可能想做的是设置自动加载。手动添加时,它会起作用。这是我在bootsrap.php文件$moduleLoader=new Zend_Application_Module_Autoloader(数组('namespace'=>'','basePath'=>Application_PATH))中的代码;返回$moduleLoader;