2012-10-27 79 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自身保留的。您生成的类应该长到项目的名称空间。