0

我在我的 zend_framework/php 项目中使用 propel runtime v1.5.4 及其相关的 propel_generator 两年以来没有任何问题。

昨天我已经通过 pear 将 propel_generator 更新到 v1.6.5,将运行时库更新到 v1.6.6。在使用新生成器进行第一次构建过程后,生成的 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'

...

新生成器在 'map' 和 'om' 路径之前添加了一个前导斜杠。所以推进自动加载器找不到类文件。

是否有任何配置选项或生成器模板我可以更改它?

谢谢。

4

1 回答 1

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

于 2012-06-25T08:17:31.747 回答