我目前正在使用WampServer在Windows上开发,并使Composer工作(使用OpenSSL),Propel安装没有问题,一切似乎都可以正常工作。但是,我的项目现在需要利用
here的“等行为”行为。
我以为这会让我使用推进行为。在我的schema.xml中,我有以下代码段:
但是当我运行propel-gen sql我得到错误:
[phingcall] Unknown behavior "equal_nest"; make sure you configured the propel.be
havior.equal_nest.class setting in your build.properties
文件说:
Then, if you don’t use Composer, or an autoloader in your application, add the following configuration to your build.properties or propel.ini file:
让我假设我不必放入build.properties文件。但是,把它放在这里给我以下错误:
PHP Fatal error: Class 'EqualNestParentBehavior' not found in C:\home\movesleag
ue.com\vendor\craftyshadow\propel-equalnest-behavior\src\EqualNestBehavior.php o
n line 74
我不知道这是否与自动加载不起作用或命名空间有关(我的模式有一个命名空间,但是当我删除它也会得到同样的错误)。
我的composer.json文件如下所示:
{
"require": {
"craftyshadow/propel-equalnest-behavior": "dev-master"
}
}
注意:我本来有Propel,但是由于平等的行为本身就需要它,所以我只是让它完成它的工作。
那么,使用Propel行为与Composer的正确方法是什么,如果我做的正确,为什么我会看到上面的错误?
更新
我将此行添加到EqualNestBehaviour.php的顶部:
include __DIR__ . DIRECTORY_SEPARATOR . 'EqualNestParentBehavior.php';
SQL似乎正确生成,没有错误。但是,更改该文件对我来说看起来并不聪明!这可能是自动加载的问题吗?有什么可以想到的,我可以做的来测试吗?
我可以确认在实际的Propel代码中使用Equal Nest行为正常工作,使用类似addFriends()的函数 – 这是与上述更改仍然存在的。
在我的autoload_namespaces.php文件中,我有以下内容:
// autoload_namespaces.php generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
);