我正在使用Zend Framework 1.10.2编写应用程序。
我创建了几个模型类和一个控制器来处理它们。
当我执行我的应用程序并访问管理控制器时。我看到了这个错误。
致命错误:第16行的C:\ xampp \ htdocs \ bidpopo \ application \ controllers \ AdminController.php中找不到类'Application_Model_DbTable_Users'
错误清楚地显示了自动加载错误。
因此我在bootstrap文件中编写了这段代码。
protected function initAutoload()
{
$modeLoader = new Zend_Application_Module_AutoLoader(array
('namespace'=>'','basePath'=>APPLICATION_PATH ));
//echo(APPLICATION_PATH);
return $modeLoader;
}
仍然存在错误:(。任何人都可以建议我在这里错过了什么吗?
这是Model Users类的位置。
C:\ XAMPP \ htdocs中\ bidpopo \应用\模型\ DBTABLE \ Users.php
这是它的代码。
class Application_Model_DbTable_Users extends Zend_Db_Table_Abstract
{
//put your code here
protected $_name='users';
public function getUser($id)
{
$id = (int)$id;
$row = $this->fetchrow('id='.$id);
if(!$row)
{throw new Exception("Could not find row id - $id");}
return $row->toArray();
}
public function addUser($userDetailArray)
{
$this->insert($userDetailsArray);
}
public function updateUser($id,$userDetailArray)
{
$this->update($userDetailArray,'id='.(int)$id);
}
public function deleteUser($id)
{
$this->delete('id='. (int)$id);
}
}
这是管理员控制器的代码
class AdminController extends Zend_Controller_Action
{
public function init()
{
/* Initialize action controller here */
}
public function indexAction()
{
$this->view->title= "All Users";
$this->view->headTitle($this->view->title);
$users = new Application_Model_DbTable_Users();
$this->view->users = $users->fetchAll();
}
public function addUserAction()
{
// action body
}
public function editUserAction()
{
// action body
}
public function deleteUserAction()
{
// action body
}
答案 0 :(得分:1)
您的应用程序类不遵循您设置的命名空间的正确命名约定。 Zend_Application_Module_AutoLoader与普通自动加载器略有不同,因为它不会简单地用'/'更改类名中的'_'。它查看类名的第二部分,然后根据该文件夹检查文件夹是否存在。
您需要更改一行:
$modeLoader = new Zend_Application_Module_AutoLoader(array(
'namespace'=>'Application',
'basePath'=>APPLICATION_PATH
));
这意味着它将自动加载前缀为“Application_”的所有模块类。当它的第二部分是'Model_'时,它将在类的“{$ basePath} / models”中查找。其余类名中的“_”将替换为“/”。因此该文件的文件路径为“{$ basePath} /models/DbTable/Users.php”。
了解更多here。