20

私は現在 Windows で開発を行ってWampServerおり、Propel を問題なくインストールしComposerて (で) 作業しており、すべて正常に動作しているようです。ただし、私のプロジェクトでは、見つかった hereOpenSSLを利用する必要があります。Equal Nest Behaviour

これにより、推進動作を使用できるようになると思いました。私schema.xmlには次のスニペットがあります:

<table name="friend">
  <behavior name="equal_nest">
    <parameter name="parent_table" value="user" />
  </behavior>
</table>

しかし、実行するpropel-gen sqlとエラーが発生します:

[phingcall] Unknown behavior "equal_nest"; make sure you configured the propel.be
havior.equal_nest.class setting in your build.properties

ドキュメントには次のように記載されています。

次に、アプリケーションで Composer またはオートローダーを使用しない場合は、次の構成を build.properties または propel.ini ファイルに追加します。

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 を持っていましたが、equalnest の動作には Propel 自体が必要なため、その仕事を任せています。

では、Composer で Propel ビヘイビアーを使用する正しい方法は何ですか? また、正しく使用している場合、上記のエラーが表示されるのはなぜですか?

アップデート

この行を の先頭に追加しましたEqualNestBehaviour.php:

include __DIR__ . DIRECTORY_SEPARATOR . 'EqualNestParentBehavior.php';

また、SQL はエラーなく正しく生成されているようです。ただし、そのファイルを変更することは、私には賢明ではありません。オートローディングの問題でしょうか?それをテストするために私にできることは何か考えられますか?

Equal Nest Behaviour私の実際のPropelコードでの使用は、次のような関数を使用して正常に機能することを確認できますaddFriends()-これは、上記の変更がまだ残っている場合です。

私のautoload_namespaces.phpファイルには次のものがあります。

<?php

// autoload_namespaces.php generated by Composer

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

return array(
);
4

1 に答える 1

2

これはオートロードの問題です。

あなたが持っていることを確認してください

propel.behavior.equal_nest.class = vendor.craftyshadow.propel-equalnest-behavior.src.EqualNestBehavior

build.properties (Propel 用) で。

アプリケーションのブートストラップ プロセス中に、composer によって生成されたオートローダー ファイルが含まれていることを確認してください。Composer は「vendor/autoload.php」ファイルを生成します。これを含めると、無料でオートロードを利用できます。また、Composer によってインストールされたものはすべて自動的に検出されます。

require 'vendor/autoload.php';
于 2013-08-01T19:41:53.020 に答える