2013-06-07 9 views
20

Ich bin derzeit auf Windows mit WampServer entwickeln und Composer arbeiten (mit OpenSSL), mit Propel ohne Problem installiert, und alles scheint gut zu funktionieren. Allerdings muss mein Projekt jetzt die Equal Nest Behaviour gefunden here verwenden.Installieren Propel Verhalten mit Composer

Ich dachte, dies würde mir erlauben, das Antriebsverhalten zu verwenden. In meinem schema.xml habe ich folgendes Snippet:

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

Aber wenn ich propel-gen sql laufen bekomme ich den Fehler:

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

Die Dokumentation sagt:

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:

mich machen davon aus, dass ich didn Ich muss die Datei build.properties nicht einfügen. Es ist jedoch bei der Umsetzung gibt mir die folgende Fehlermeldung:

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 

mir nicht sicher war, ob das etwas mit Autoloading (mein Schema hat einen Namensraum nicht funktioniert oder Namensräume zu tun, aber ich diesen gleichen Fehler beim Entfernen es auch).

Meine composer.json Datei sieht wie folgt aus:

{ 
    "require": { 
     "craftyshadow/propel-equalnest-behavior": "dev-master" 
    } 
} 

Anmerkung: Ich habe Propel haben da drin selbst, sondern als das equalnest Verhalten es selbst benötigt Ich lasse nur, dass seine Arbeit tun.

Also, was ist die richtige Methode Propel Verhalten mit Composer zu verwenden, und wenn ich es richtig mache, warum sehe ich die Fehler oben?

Updates

Ich habe diese Linie an die Spitze der EqualNestBehaviour.php:

include __DIR__ . DIRECTORY_SEPARATOR . 'EqualNestParentBehavior.php'; 

Und die SQL scheint korrekt ohne Fehler generiert werden. Das Ändern dieser Datei scheint mir jedoch nicht schlau zu sein! Kann es beim Autoloading ein Problem geben? Gibt es etwas, woran Sie denken können, dass ich das tun kann?

kann ich bestätigen, dass Equal Nest Behaviour in meinem eigentlichen Propel Code funktioniert gut, mit Funktionen wie addFriends() mit - noch an seinem Platz dies mit den oben genannten Änderungen ist.

In meiner autoload_namespaces.php Datei habe ich die folgenden:

<?php 

// autoload_namespaces.php generated by Composer 

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

return array(
); 
+0

Ich nehme an, Sie haben eine 'php composer.phar install'? Vielleicht versuchen Sie Propel und das Behavior through Composer zu installieren (es scheint, dass nur das Verhalten ist). – Sam

+0

Nein Ich benutze die globale Installation, also funktioniert nur 'composer install'. Wie ich oben sagte, erfordert das Verhalten 'propel 1.6. * Selbst. Natürlich wird der Antrieb installiert, wenn er funktioniert, oder ich würde die Fehlermeldungen von Propel überhaupt nicht sehen können. – LeonardChallis

+0

Oh ich verpasste das Verhalten einschließlich Propel 1.6. Es scheint definitiv ein automatisches Ladeproblem zu sein, ich würde es mit Propel in der Composer-Datei versuchen - nur für den Fall. – Sam

Antwort

2

Dies ist eine automatische Laden von Ausgabe.

Bitte überprüfen Sie, dass Sie

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

in Ihrem build.properties (für Propel) haben.

Bitte überprüfen Sie, ob die vom Compiler generierte Autoloader-Datei während des Bootstrap-Prozesses Ihrer Anwendung enthalten ist. Composer generiert eine Datei "vendor/autoload.php".Wenn Sie es einschließen, erhalten Sie kostenlos Autoloading. Und alles, was von Composer installiert wird, wird automatisch gefunden.

require 'vendor/autoload.php'; 
+0

Ja, das Autoload ist eine viel bessere Möglichkeit, Dinge zu tun. Vielen Dank. – LeonardChallis