我在zend_framework / php项目中使用了propel运行时v1.5.4及其相关的propel_generator,因为两年没有任何问题。
昨天我已经通过pear将propel_generator更新为v1.6.5,将运行时库更新为v1.6.6。在使用新生成器的第一个build-proccess之后,生成的classmap- [project] -conf.php文件出现了问题:
旧发电机(v1.5.4)
...
'AutocompleteQuery' => 'AutocompleteQuery.php',
'AutocompleteTableMap' => 'map/AutocompleteTableMap.php',
'BaseAclAssertion' => 'om/BaseAclAssertion.php'
...
新生成器(v1.6.5)
...
'AutocompleteQuery' => 'AutocompleteQuery.php',
'AutocompleteTableMap' => '/map/AutocompleteTableMap.php',
'BaseAclAssertion' => '/om/BaseAclAssertion.php'
...
新生成器在“地图”之前添加了一个前导斜杠。和' om'路径。因此,推进式自动装载机无法找到类文件。
是否有任何配置选项或生成器模板可以更改此内容?
感谢。
答案 0 :(得分:3)
您的配置中似乎targetPackage
构建属性为空。默认情况下,Propel使用项目名称作为目标包,因此您始终在类之前有一个目录:
// ...
'AutocompleteQuery' => 'project/AutocompleteQuery.php',
'AutocompleteTableMap' => 'project/map/AutocompleteTableMap.php',
'BaseAclAssertion' => 'project/om/BaseAclAssertion.php'
我修复了Propel以消除此限制,这样它将生成一个有效的包路径。我在这里讨论的是包,因为包用于确定文件的写入位置。
了解Propel中的软件包的文档: http://www.propelorm.org/cookbook/multi-component-data-model.html#understanding_packages
通过提交修复: https://github.com/propelorm/Propel/commit/b03569a802471b86e6e52287974de17f836c9baa