rsobczuk
17.01.2008, 16:27:11
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
17.01.2008, 16:56:48
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
17.01.2008, 16: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ą.
rsobczuk
17.01.2008, 17:05:10
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
17.01.2008, 17:07:47
Można ręcznie usunąć zawartość katalogu cache ale wygodniej jest wykonać polecenie:
Kod
symfony cc
które zrobi to za Ciebie.
rsobczuk
20.01.2008, 11:33:22
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
20.01.2008, 11:54:00
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
20.01.2008, 20:59:49
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.