Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Symfony problem z ORM oraz tworzeniem obiektu.
Forum PHP.pl > Forum > PHP > Frameworki
rsobczuk
Witam,
jakiś czas temu zacząłem zabawę z frameworkiem Symfony.
Zacząłem zabawę ORM - geenralnie zabawą z bazą danych.
Stworzyłem sobie tabelę w bazie danych, utworzyłem dla tej tabeli plik schema.yml dla struktury (wszystko zgodnie jak w dokumentacji w rozdziale 8.
Mój plik wygląda tak:

propel:
user:
_attributes: { phpName: User }
user_id:
firstname: varchar(50)
lastname: varchar(50)

Wszystko ładnie mi działa - dane dodają się do bazy danych za pomocą propela. Poniższy kod umieściłem w jednej z akcji w moim module:
$pConnection = Propel::getConnection();
$pQuery = "INSERT INTO user(firstname, lastname) VALUES ('Rafal', 'Sobczuk')";
$pStatement = $pConnection->prepareStatement($pQuery);
$pResultset = $pStatement->executeQuery();

Do tej pory wszystko działa ładnie.

W dokumentacji napisane jest, że oprócz standardowych zapytań mogę użyć klasy User (w moim przypadku, bo taki nadałem atrybut tej tabeli w pliku schema.yml.
Po wywołaniu konstrutora klasy User w tej samej akcji którą opisałem kilka linijek wyżej dostaję komunikat, że:

Fatal error: Class 'User' not found in /var/www/html/www.sobczuk.eu/apps/main/modules/page/actions/actions.class.php on line 26

W którym miejscu powinienem wywołać konstruktor klasy User? A może czegoś nie za' include'owałem?
W dokumentacji dość niejasno to jest napisane.
Z góry dziękuję za wszelką pomoc.
Pozdrawiam
Rafał Sobczuk
Sedziwoj
Niewiele korzystasz z ORM, raczej z abstrakcji bazy danych, skoro nie używasz obiektów mapujących....
Ale z Symfony nie pomogę, korzystam z Propela ale nie w tym fw. (z dokumentacji wynika, że powinno być dostępne po poprawnym zdefiniowaniu... ale nie wnikam)
destroyerr
Napisz czy po zbudowaniu modelu wyczyściłeś cache. Jeśli tak to sprawdź czy w pliku: /cache/<nazwa aplikacji>/<nazwa środowiska>/config/config_autoload.yml.php masz dodaną klase User z poprawną ścieżką.
rsobczuk
Cytat(destroyerr @ 17.01.2008, 17:58:49 ) *
Napisz czy po zbudowaniu modelu wyczyściłeś cache. Jeśli tak to sprawdź czy w pliku: /cache/<nazwa aplikacji>/<nazwa środowiska>/config/config_autoload.yml.php masz dodaną klase User z poprawną ścieżką.


Wystarczy wykasować katalog cache?
phpion
Można ręcznie usunąć zawartość katalogu cache ale wygodniej jest wykonać polecenie:
Kod
symfony cc

które zrobi to za Ciebie.
rsobczuk
Szacuneczek.
Dzięki za pomoc dla wszystkich...
Usunięcie cacheu pomogło.
Pozdrawiam
Rafał

Nie będę tworzył nowego wątku. Moje pytanie też jest odnośnie Symfony, ale tym razem chcę zrobić coś takiego:
Na głównym templejcie strony (plik: <prjekt>/apps/<aplikacja>/templates/layout.php jest taki fragment kodu:<?php echo $sf_data->getRaw('sf_content') ?>
Oznacza to, że w tym miejscu będzie wyświetlony kod wygenerowany przez poszczególne moduły (w zależności od akcji jaka będzie uruchomiona).

Chciał bym zawrzeć w tym samym głównym templejcie inny kontekst (np flagi z możliwością wyboru języka aplikacji).
Czy ktoś pomoże mi jak coś takiego wygenerować, żeby nie wklejać do tego pliku oddzielnie linków z obrazkami i linkami do akcji, gdzie mogę zmienić język, tylko żeby był to wklejony obiekt z wywołaną jakąś metodą, gdzie HTML został stworzony w zupełnie w innym pliku.
Mam nadzieję, że wysłowiłem się jasno.
Dzięki
Pozdrawiam
Rafał
phpion
Ja przy korzystaniu z wersji językowych w Symfony dodaję do głównego szablonu odpowiednie linki ręcznie + korzystam z odpowiedniego helpera do generowania tychże linków. Jeśli jednak chcesz tą operację zrzucić na jakiś obiekt to może po prostu go utwórz w szablonie i wywołaj odpowiednią metodę.
rsobczuk
Też o tym myślałem, ale fajniejsze było by, żeby stworzyć klasę bardziej na tym samym poziomie co tworzona jest strona przy wywoływaniu akcji aplikacji...
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.