2011-11-22 24 views
3

我想在Zend Framework的模塊目錄之外放置模型。準確地說,在/庫文件夾將模型放在Zend Framework的庫目錄中

library/ 
    models/ 
    actors/ 
     ActorsMapper.php 
     Actor.php 
    books/ 
     BooksMapper.php 
     Book.php 

INSTEAD OF

application/ 
modules/ 
    models/ 
    actors/ 
     ActorsMapper.php 
     Actor.php 
    books/ 
     BooksMapper.php 
     Book.php 

這樣做,這樣我就不必爲每個創建的模塊創建單獨的模型。 我需要更改哪些配置? 如果您需要更多詳細信息,請詢問。

謝謝:)

回答

2

第一個答案有效,但如果您想在自舉中註冊自動加載,我會給你另一個答案。

1)將'models'文件夾放入帶有所有Table.php文件的庫中。

每一個模型/類應該有:

class Model_Table extends Zend_Db_Table_Abstract{ ... } 

2)在bootstrap.php中提出:

protected function _initAutoLoad() { 
    // Add autoloader empty namespace 
    $autoLoader = Zend_Loader_Autoloader::getInstance(); 
    $resourceLoader = new Zend_Loader_Autoloader_Resource(
      array(
       'basePath'  => APPLICATION_PATH, 
       'namespace'  => '', 
       'resourceTypes' => array(
       'model'   => array(
         'path'  => '../library/models/', 
         'namespace' => 'Model_' 
        ), 
       ), 
      ) 
    ); 
    return $resourceLoader; 
} 

就是這樣。現在你可以在這樣的控制器中使用你的模型:

$model = new Model_Table(); 
1

的Zend自動加載器加載類名稱前綴開頭,也就是它registred。 如果您的包含路徑中有庫,您可以在自動加載器上簡單地註冊「模型」(如默認名稱空間),並將您的類命名爲Models_Actors_Actor。

+0

你能解釋一些代碼片段嗎? –

2

如果你想用同一型號的所有模塊,你可以把它放在應用程序文件夾的應用程序/模型

和正常工作時,你有沒有網絡模塊只喜歡。

但是,如果你想在庫中有模型,你可以把'模型'文件夾放在你的庫路徑中並自動加載它。

  1. 使用所有Table.php文件將文件夾'Models'創建到庫中。
  2. 在CONFIGS /的application.ini地說:

    autoloaderNamespaces.models = "Models_" 
    

然後你就可以在你的web應用程序中使用的命名空間 'Models_'

在控制器:

$model = new Models_Table(); 

任何案例中,我建議您將文件夾模型保留在路徑應用程序/模型中

相關問題