2012-10-27 38 views
3

我搜索遠近如何G642.44各級推進和Zend框架2,但是我一直沒能拿出一個解決方案呢。馬金江Zend框架2,推進

這是我到目前爲止所。

安裝ZF2框架目錄 插入樣本畫冊表數據來自ZF網站

我的文件夾結構看起來像這樣

--Vendor 
----Propel 
------album 
--------autoload_classmap.php 
--------models 
----------map 
----------om 
----------Album.php 
----------AlbumPeer.php 
----------AlbumQuery.php 
------config 
--------module.config.php 
------Module.php 
------autoload_classmap.php 

專輯/ autoload_classmap.php看起來像這樣

//vendor/Propel/album/autoload_classmap.php 
<?php 
// Generated by ZF2's ./bin/classmap_generator.php 
return array(
    'AlbumTableMap' => __DIR__ . '/models/map/AlbumTableMap.php', 
    'BaseAlbumPeer' => __DIR__ . '/models/om/BaseAlbumPeer.php', 
    'BaseAlbumQuery' => __DIR__ . '/models/om/BaseAlbumQuery.php', 
    'BaseAlbum'  => __DIR__ . '/models/om/BaseAlbum.php', 
    'Album'   => __DIR__ . '/models/Album.php', 
    'AlbumPeer'  => __DIR__ . '/models/AlbumPeer.php', 
    'AlbumQuery'  => __DIR__ . '/models/AlbumQuery.php', 
); 

這裏是module.config.php

//vendor/Propel/config/module.config.php 
<?php 
return array(); 

這裏是行走/ autoload_classmap.php

//vendor/Propel/autoload_classmap.php 

<?php 
// Generated by ZF2's ./bin/classmap_generator.php 
return array(
    'Propel'            => __DIR__ . '/runtime/lib/Propel.php', 
); 

終於Model.php文件

對於這個例子的緣故簡單,我把下面的代碼到我的控制器。

//module/Application/src/Application/Controller/IndexController.php 
namespace Application\Controller; 

use Zend\Mvc\Controller\AbstractActionController; 
use Zend\View\Model\ViewModel; 

class IndexController extends AbstractActionController 
{ 
    public function indexAction() 
    { 
     $q = new \Propel\Album(); 
     $q->setArtist('The Who'); 
     $q->setTitle('Tommy'); 
     $q->save(); 

     return new ViewModel(); 
    } 
} 

我得到的錯誤是

Class 'Propel\\Album' not found 

經常拿這一點的來源是

https://groups.google.com/forum/?fromgroups=#!searchin/propel-users/zend/propel-users/lsHs-jjxp68/LDrQjzik6gAJ https://docs.google.com/viewer?a=v&pid=forums&srcid=MDU2NDIxODQyNDc0MDMyNjQ3NzUBMDY3ODcxMTYzMzg0MDA4OTU0MzgBeFpDZUM1WTZqMThKATQBAXYy Adding Vendor Specific Module To Zend Framework 2.0

+0

我寫這篇博客,我認爲回答這個問題:http://4zend.com/integrate-propel-orm-with-zend-framework-2/希望這個作品送給你。更新:我把它變成了一個工作模塊。你可以在github上瀏覽它,看看它是如何完成的,或者只是使用Composer進行安裝。 –

回答

0

\Propel\Album沒有被發現,因爲類地圖指定爲Album爲班級名稱。

我猜,如果你添加一行:namespace Propel;到每臺行走相關文件類映射發電機會把正確的類名。當然,您需要更新受影響代碼中的類名稱。

+0

感謝您的回覆。然而,將名稱空間添加到每個名稱空間是相當不合理的。必須有更好的方法來實現ZF2的推進 –

+0

不客氣 - 我敢肯定有人會遇到過這個。如果您使用新的\ Album(),新的Album類是否工作?我從來沒有使用太多的Propel的,但它似乎支持命名空間 - http://www.propelorm.org/cookbook/namespaces.html – DrBeza

+0

很好的建議然而,沒有工作。我能夠從Vendor/Propel/Module.php類中使用一個函數。 'code' echo \ Propel \ Module :: MYCONSTANT; –

2

如果你沒有在你的XML架構設置命名空間,你的類應該在根命名空間訪問,從而\專輯例如。如果你想有一些其他的命名空間,你應該在你的XML模式的數據庫標籤中定義它。你不應該使用Propel命名空間,因爲它是爲Propel自身保留的。您生成的類應該長到項目的名稱空間。