首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Composer安装推进行为

用Composer安装推进行为
EN

Stack Overflow用户
提问于 2013-06-07 08:30:57
回答 1查看 1.2K关注 0票数 20

我目前正在使用WampServer在Windows上进行开发,并让Composer工作(使用OpenSSL),安装Propel时没有问题,而且一切看起来都很好。但是,我的项目现在需要使用Equal Nest Behaviour found 这里

我认为这将允许我使用推进行为。在我的schema.xml中,我有以下代码片段:

代码语言:javascript
复制
<table name="friend">
  <behavior name="equal_nest">
    <parameter name="parent_table" value="user" />
  </behavior>
</table>

但是,当我运行propel-gen sql时,我会得到错误:

代码语言:javascript
复制
[phingcall] Unknown behavior "equal_nest"; make sure you configured the propel.be
havior.equal_nest.class setting in your build.properties

文件上说:

然后,如果您没有在应用程序中使用Composer或autoloader,请将以下配置添加到build.properties或propel.ini文件中:

让我假设我不需要放进build.properties文件。但是,把它放进去会给我带来以下错误:

代码语言:javascript
复制
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文件如下所示:

代码语言:javascript
复制
{
    "require": {
        "craftyshadow/propel-equalnest-behavior": "dev-master"
    }
}

注意:我确实有自己的进步,但由于最平等的行为要求它本身,我只是让它做它的工作。

那么,什么是正确的方式来使用推动行为与作曲家,如果我做得对,为什么我看到上面的错误?

更新

我将这一行添加到EqualNestBehaviour.php的顶部

代码语言:javascript
复制
include __DIR__ . DIRECTORY_SEPARATOR . 'EqualNestParentBehavior.php';

而且SQL似乎是正确生成的,没有错误。然而,修改该文件对我来说似乎不明智!这会不会是自动加载的问题呢?你能想到我能做些什么来测试吗?

我可以确认,在我的实际Propel代码中使用Propel可以正常工作,使用像addFriends()这样的函数--这是在上述更改仍然存在的情况下实现的。

在我的autoload_namespaces.php文件中,我有以下内容:

代码语言:javascript
复制
<?php

// autoload_namespaces.php generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);

return array(
);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-01 19:41:53

这是一个自动渲染的问题。

请查查你有没有

代码语言:javascript
复制
propel.behavior.equal_nest.class = vendor.craftyshadow.propel-equalnest-behavior.src.EqualNestBehavior

在你的build.properties (为了推进)。

请检查编写器生成的自动加载程序文件是否包含在应用程序的引导过程中。Composer生成一个“供应商/autooload.php”文件。如果你把它包括在内,那么你就可以免费获得自动加载。所有由Composer安装的东西都会自动找到。

代码语言:javascript
复制
require 'vendor/autoload.php';
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16979559

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档