2010-03-10 42 views
0

Iam使用Zend Framework 1.10.2編寫應用程序。自動加載無法在Zend Framework 1.10.2中工作的可能原因?

我創建了幾個模型類和一個控制器來處理它們。

當Iam執行我的應用程序並訪問管理控制器時。 Iam看到這個錯誤。

致命錯誤:類 'Application_Model_DbTable_Users' 用C未找到:\ XAMPP \ htdocs中\ bidpopo \應用\控制器\ AdminController.php第16行

誤差清楚地示出它的一個自動裝載錯誤。

因此我在引導文件中寫了這段代碼。

protected function initAutoload() 
{ 
    $modeLoader = new Zend_Application_Module_AutoLoader(array 
     ('namespace'=>'','basePath'=>APPLICATION_PATH)); 
    //echo(APPLICATION_PATH); 
    return $modeLoader; 
} 

仍然是錯誤仍然存​​在:(任何人都可以建議我什麼蔭錯過了這裏

這是Model類用戶的位置

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 
    } 

回答

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

相關問題