Obecnie pracuję w systemie Windows z WampServer
i mam Composer
działa (z OpenSSL
), z Propel zainstalowany bez problemu, i wszystko wydaje się działać dobrze. Jednak mój projekt musi teraz skorzystać z Equal Nest Behaviour
znalezionych here.Instalowanie zachowań Propel z Kompozytorem
Pomyślałem, że pozwoliłoby mi to na zachowanie napędu. W moim schema.xml
Mam następujący fragment:
<table name="friend">
<behavior name="equal_nest">
<parameter name="parent_table" value="user" />
</behavior>
</table>
Ale kiedy biegnę propel-gen sql
pojawia się błąd:
[phingcall] Unknown behavior "equal_nest"; make sure you configured the propel.be
havior.equal_nest.class setting in your build.properties
Dokumentacja mówi:
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:
Making mi przypuszczać, że nie zrobił 'Trzeba wstawić plik build.properties. Jednak wprowadzenie go w daje mi następujący błąd:
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
nie byłem pewien, czy to coś wspólnego z autoloading nie działa lub nazw (mój schemat ma nazw, ale pojawia się ten sam błąd przy usuwaniu to też).
Mój plik composer.json
wygląda następująco:
{
"require": {
"craftyshadow/propel-equalnest-behavior": "dev-master"
}
}
Uwaga: miałem Propel tam sam, ale jak equalnest zachowanie wymaga ona sama jestem po prostu pozwalając że wykonywać swoje zadania.
Jaki jest poprawny sposób używania Propel behaviors z Composer, a jeśli robię to dobrze, dlaczego widzę powyższe błędy?
Aktualizacje
Dodałem tę linię do góry EqualNestBehaviour.php
:
include __DIR__ . DIRECTORY_SEPARATOR . 'EqualNestParentBehavior.php';
A SQL wydaje się być generowane poprawnie, bez błędów. Jednak zmiana tego pliku nie wydaje mi się mądra! Czy może to być problem z automatycznym ładowaniem? Czy jest coś, co możesz wymyślić, że mogę to przetestować?
Mogę potwierdzić, że używanie Equal Nest Behaviour
w moim rzeczywistym kodzie Propel
działa dobrze, przy użyciu funkcji takich jak addFriends()
- jest to związane z powyższymi zmianami nadal obowiązującymi.
W moim pliku autoload_namespaces.php
mam następujące:
<?php
// autoload_namespaces.php generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
);
Zakładam, że zrobiłeś 'php composer.phar install'? Może spróbuj zainstalować zarówno Propel, jak i Behavior przez Composer (wydaje się, że tylko zachowanie jest) .. – Sam
Nie Używam instalacji globalnej, więc działa tylko 'composer install'. Jak wspomniałem powyżej, zachowanie 'require's Propel 1.6. * Samo w sobie. Oczywiście, propel jest zainstalowany, działający lub nie byłby w stanie zobaczyć komunikatów o błędach z Propel. – LeonardChallis
Och, brakowało mi zachowania, w tym Propela 1.6. Zdecydowanie wygląda na problem z automatycznym ładowaniem, spróbowałbym go z Propelem w pliku Composer - na wszelki wypadek. – Sam