Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> OPT + Doctrine problem, Chyba te 2 biblioteki gryzą się ze sobą
Sajrox
post
Post #1





Grupa: Zarejestrowani
Postów: 254
Pomógł: 7
Dołączył: 9.10.2007
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Witam,

Otóż postanowiłem wykorzystać OPT 2 (Open Power Template 2) w swoim frameworku. Jednak w sytuacji gdy uzyję OPT i wykonam jakieś zapytanie do bazy (w tabeli administratorzy) za pomocą Doctrine otrzymuje błąd:
  1. Warning: require(C:\wamp\www\PROJEKTY\StronaOPT\Lib\Opt/AdministratorzyTable/Class.php) [function.require]: failed to open stream: No such [url="http://www.php.net/file"]file[/url] or directory in C:\wamp\www\PROJEKTY\StronaOPT\Lib\Opt\Opl\Base.php on line 430



Wydaje mi się że gryzie się tutaj funkcja związana z autoładowaniem klasy.



Czy ktoś może coś na to poradzić (IMG:style_emoticons/default/questionmark.gif)

Ten post edytował Sajrox 20.08.2009, 20:11:45
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
vokiel
post
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


A jak podajesz ścieżke? Względna, bezwzględna?
Może trzeba ujednolicić slahe i backslashe....
C:\wamp\www\PROJEKTY\StronaOPT\Lib\Opt/AdministratorzyTable/Class.php

Podałbyś kod gdzie i jak to jest dołączane, strukture katalogów, byłoby łatwiej wróżyć (IMG:style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Sajrox
post
Post #3





Grupa: Zarejestrowani
Postów: 254
Pomógł: 7
Dołączył: 9.10.2007
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Oto próbka kodu jaką sobie utworzyłem:

  1. # =====>
  2. # Inicjuj autoloader OPT
  3. require('./Lib/Opt/Opl/Base.php');
  4. Opl_Loader::setDirectory('./Lib/Opt');
  5. Opl_Loader::register();
  6.  
  7. # Inicjuj autoloader Doctrine
  8. include_once("./Lib/Doctrine.php");
  9. spl_autoload_register(array('Doctrine', 'autoload'));
  10. # <=====
  11.  
  12.  
  13. # =====>
  14. # Załadowanie plików
  15. include_once("./core/config.php");
  16. # <=====
  17.  
  18.  
  19.  
  20. # =====>
  21. # Konfiguracja u połączenie z bazą
  22. $manager = Doctrine_Manager::getInstance();
  23. # <=====
  24. exit();

Nie ma tu nic skomplikowanego. Jednak po wywołaniu $manager = Doctrine_Manager::getInstance(); otrzymuje błąd:

  1. Warning: require(C:\wamp\www\PROJEKTY\www\Lib\Opt/Doctrine/Class.php) [function.require]: failed to open stream: No such file or directory in C:wampwwwPROJEKTYwwwLibOptOplBase.php on line 431
Go to the top of the page
+Quote Post
vokiel
post
Post #4





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

Ostrzeżenie: (0%)
-----


Zapewne sprawdziłeś, ale zapytam: czy fizycznie w tej lokalizacji są dane pliki?

  1. require('./Lib/Opt/Opl/Base.php');
  2. Opl_Loader::setDirectory('./Lib/Opt');
  3. /* ...
  4. czy doctrine nie powinno być w Opt? albo setDirectory nie powinien wskazywać na ./Lib ?
  5. */
  6. include_once("./Lib/Doctrine.php");
Go to the top of the page
+Quote Post
Sajrox
post
Post #5





Grupa: Zarejestrowani
Postów: 254
Pomógł: 7
Dołączył: 9.10.2007
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Tak tak pliki istnieją. Gdyby ie istniały to pewnie otrzymał bym błąd.

gdy zakomentuje linijke:

  1.  
  2. $manager = Doctrine_Manager::getInstance();
  3.  





widze biały ekran bez błędów co oznacza że wszystko jest ok. W momencie kiedy próbuje użyć doctrine wywołująć jakąś klasę otrzymuje własnie tamten błąd :/

Jeszcze potestuje i spóbuje jakieś inne rozwiązania. Ale z tego co widze to autoloader Doctrine i OPT się gryzą

Go to the top of the page
+Quote Post
murwazy
post
Post #6





Grupa: Zarejestrowani
Postów: 53
Pomógł: 5
Dołączył: 13.04.2007
Skąd: Szczecin

Ostrzeżenie: (0%)
-----


http://www.invenzzia.org/pl/zasoby/artykul...y-galerie-zdjec
jak widac sa uzywane razem i dzialaja.
nie szukales na stronie opt?
Go to the top of the page
+Quote Post
Zyx
post
Post #7





Grupa: Zarejestrowani
Postów: 952
Pomógł: 154
Dołączył: 20.01.2007
Skąd: /dev/oracle

Ostrzeżenie: (0%)
-----


Oprócz wspomnianego artykułu, można też wykorzystać następujące rozwiązanie:

http://wiki.invenzzia.org/wiki/Using_OPC_a...th_Doctrine_ORM

Ogólnie rzecz polega na tym, że autoloader OPL jest uniwersalny i może obsługiwać całą rzeszę bibliotek. Pojawia się jednak konflikt w postaci modeli Doctrine, które wcale bibliotekami nie są. Można albo umieścić autoloader Doctrine przed OPL-em i odpowiednio go skonfigurować, albo umieścić za nim i nakazać wyłączenie obsługi nieznanych bibliotek:

  1. require_once(BASE_PATH.'lib/Opl/Base.php');
  2. Opl_Loader::setHandleUnknownLibraries(false);
  3. Opl_Loader::addLibrary('Doctrine', array('basePath' => BASE_PATH.'lib/', 'handler' => null));
  4. Opl_Loader::addLibrary('Opl', array('directory' => BASE_PATH.'lib/Opl/'));
  5. Opl_Loader::addLibrary('Opt', array('directory' => BASE_PATH.'lib/Opt/'));
  6. Opl_Loader::register();
  7.  
  8. // tutaj Doctrine


Jeśli chcesz, możesz też użyć specjalnego autoloadera wyłącznie dla modeli Doctrine dostarczanego razem z OPC.

Tak więc sposobów jest wiele - sam korzystam z takiego połączenia i działa świetnie (IMG:style_emoticons/default/smile.gif) .
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 2.10.2025 - 21:38