Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [Symfony] Nie mogę zbudować modelu.
Lk_hc
post
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 12.06.2006

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


Witam. Proszę o pomoc: Po skonfigurowaniu parametrów połączenia do bazy danych w pliku $SF_ROOT/config/database.yml i odpowiednim ustawieniu pliku schematu danych w $SF_ROOT/apps/frontend/conf/schema.yml nie mogę wygenerować odpowiednich klas do obsługi bazy danych za pomocą polecenia: symfony propel-build-model Zawsze, czy dane konfiguracyjne są prawidłowe czy nie, czy nawet jak w ogóle ich nie ma to po podaniu tego polecenia dostaje output:

CODE
>> schema converting "/home2/Loko/www/lok...cs/sf/config/schema.yml" to XML
>> schema putting /home2/Loko/www/loko.ro.../sf/config/generated-schema.xml

Warning: ini_set(): Option default_charset cannot be changed after headers have been sent (output started at /usr/share/php/symfony/vendor/pake/pakeFunction.php:366) in /usr/share/php/symfony/vendor/phing/Phing.php on line 1103

Fatal error: Declaration of UnixFileSystem::getBooleanAttributes() must be compatible with that of FileSystem::getBooleanAttributes() in /usr/share/php/symfony/vendor/phing/system/io/UnixFileSystem.php on line 266


O co w tym chodzi? jak się wreszcie podłączyć do tej bazy?

Plik generated-schema.xml wygląda tak:
CODE
<?xml version="1.0" encoding="UTF-8"?>
<database name="">

</database>


Ten post edytował mike 23.07.2008, 13:22:35
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
mike
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


A pokaż plik schema.yml, podejrzewam, że masz błedy.
Go to the top of the page
+Quote Post
Lk_hc
post
Post #3





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 12.06.2006

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


propel:
article:
_attributes: { phpName: Article }
id:
title: varchar(25)
content: text
created_at:
comment:
_attributes: { phpName: Comment }
id:
article_id:
author: varchar(255)
content: text
created_at:
Go to the top of the page
+Quote Post
mike
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Ty pisałeś tą schemę? Zrób sobie najlepiej bazę danych a później wygeneruj plik schema.yml na podstawie bazy danych.
Go to the top of the page
+Quote Post
Lk_hc
post
Post #5





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 12.06.2006

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


Jak to zrobić?
Go to the top of the page
+Quote Post
-=Peter=-
post
Post #6





Grupa: Zarejestrowani
Postów: 304
Pomógł: 51
Dołączył: 4.02.2005
Skąd: Kraków

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


  1. <?php
  2. content: text
  3. ?>

a nie powinno być:
  1. <?php
  2. content: longvarchar
  3. ?>

?


--------------------
Go to the top of the page
+Quote Post
mike
post
Post #7





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Eeee, no!
Takie pierdoły to w dokumentacji piszą. Warto poczytać.


Kod
symfony propel:build-schema
Go to the top of the page
+Quote Post
Lk_hc
post
Post #8





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 12.06.2006

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


CODE
symfony propel-build-schema

Fatal error: Declaration of UnixFileSystem::getBooleanAttributes() must be compatible with that of FileSystem::getBooleanAttributes() in /usr/share/php/symfony/vendor/phing/system/io/UnixFileSystem.php on line 266


Z dwukropkiem zamiast kreski nie działa w ogóle - nieznane polecenie.

zamiana w configu na content: longvarchar nic nie zmienia.

Ten post edytował Lk_hc 23.07.2008, 14:17:10
Go to the top of the page
+Quote Post
mike
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Jaką masz wersję PHP bo symfony masz 1.0.
Go to the top of the page
+Quote Post
Lk_hc
post
Post #10





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 12.06.2006

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


No i chyba znaleźliśmy problem:

CODE
php -v
PHP 6.0.0-dev (cli) (built: Jun 13 2007 21:52:48)
Copyright © 1997-2007 The PHP Group
Zend Engine v3.0.0-dev, Copyright © 1998-2007 Zend Technologies
Go to the top of the page
+Quote Post
mike
post
Post #11





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Nom.
W klasie UnixFileSystem funkcja getBooleanAttributes wygląda tak:
  1. <?php
  2.  
  3. function getBooleanAttributes(&$f) {
  4. // ...
  5. }
  6.  
  7. ?>
a w klasie nadrzędnej dla niej wygląda tak:
  1. <?php
  2.  
  3. function getBooleanAttributes($f) {
  4. // ...
  5. }
  6.  
  7. ?>

PHP 6.0.0 na to nie pozwala.
Go to the top of the page
+Quote Post
Lk_hc
post
Post #12





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 12.06.2006

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


Udało się zbudować model! guitar.gif Dzięki za pomoc mike.

Jeszcze mam pytanie pokrewne: Mam model, wszystkie pliki klas i xml. Ale za cholere nie mogę wyciągnąć danych z bazy danych. Jestem prawie pewny że te pare linijek kodu co pisze jest ok (według dokumentacji online). Więc moje pytanie brzmi jak sprawdzić czy Smyfony/Creole/Propel łączy się z DB. Ze specyfiki generowania modelu wynika że podanie złego hasła czy innych danych w database.yml nie wyrzuca błędów bo klasy generowane są na podstawie schema.xml. Rozpisałem się. Więc macie pomysł jak to sprawdzić?

Ten post edytował Lk_hc 24.07.2008, 12:53:55
Go to the top of the page
+Quote Post
phpion
post
Post #13





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Odpalaj aplikację w trybie dev (np. poprzez frontend_dev.php zamiast index.php), a będziesz wiedział w czym problem. Nie zapomnij o przyjacielu jakim jest "symfony cc" smile.gif
Go to the top of the page
+Quote Post
Lk_hc
post
Post #14





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 12.06.2006

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


Cały czas pracuje na frontend_dev.php. Nie wyskakuje błąd tylko zmienna która miała zawierać wartość z bazy jest pusta. Sprawdziłem issestem. Z Symfony cc dość dobrze się znamy ;] Przy czym jeśli w w klasie modelu (załóżmy za tutorialem Article.php) zrobie funkcję test zwracającą na sztywno ustawiony string to pięknie ten string sobie wędruje przez kontroler do widoku więc z przepływem zmiennych nie ma problemu. Chodzi o łączność z bazą.
Go to the top of the page
+Quote Post
mike
post
Post #15





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Jeżeli podałbyś niepoprawne dane do bazy danych to modele poinformują Cie o tym wyjątkiem kiedy zechcesz zapytać bazę o coś.
Podaj kod, zobaczymy co jest nie tak.
Go to the top of the page
+Quote Post
Lk_hc
post
Post #16





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 12.06.2006

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


Plik akcji wywołujący obiekt modelu:

  1. <?php
  2. class firstmodActions extends sfActions
  3. {
  4. /**
  5.    * Executes index action
  6.    *
  7.    */
  8. public function executeIndex()
  9. {
  10. // $this->getResponse()->setTitle('FirstMode index');
  11.  
  12.  
  13. $handle = new Article();
  14.  
  15. $this -> art_title = $handle->getTitle();
  16.  
  17.  
  18. }
  19.  
  20. public function executeShow()
  21. {
  22.  
  23. }
  24.  
  25. }
  26. ?>


Plik klasy modelu Article.php
  1. <?php
  2. class Article extends BaseArticle
  3. {
  4.  
  5.  
  6. }
  7. ?>



I nic. Próbowałem już przenoszenia pewnych wywołań do pliku modelu i odwrotnie, podawania jako parametru id do getTitle() i nic. Na złych danych połączeniowych w database.yml nie wywala błędu w trybie dev (wcześniej tak było afair) symfony cc i rm -rf cache/frontend nic nie zmieniają. Na dobrych danych konfiguracyjnych zmienna, która powinna zawierać tytuł jest pusta.

W widoku wiadomo jest echo $art_title.

Ten post edytował Lk_hc 24.07.2008, 14:18:27
Go to the top of the page
+Quote Post
mike
post
Post #17





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Załamka. Obawiam się, że masz myle wyobrażenie o działaniu tego kodu.

A działa tak:
1. Tworzysz nowy obiekt klasy Article, czyli tworzysz nowy artykuł. Nowy to znaczy niewypełniony. Bez id, bez tytułu i co tam jeszcze masz.
2. Pobierasz tytuł utworzonego przed chwilą obiektu.

Jakiego tytułu się spodziewasz w rezultacie? tongue.gif
Go to the top of the page
+Quote Post
Lk_hc
post
Post #18





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 12.06.2006

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


Zaraz, zaraz, a Article.php to nie jest klasa reprezentująca istniejący w bazie danych rekord, który zawiera artykuły, ich tytuły etc... ? Przecież jest getTitle a nie setTitle ? Tylko właśnie nęka mnie na jakiej podstawie wybiera ten artykuł.

Cholera czyli muszę się zainteresować ArticlePeer.php ?

Ten post edytował Lk_hc 24.07.2008, 14:26:31
Go to the top of the page
+Quote Post
mike
post
Post #19





Grupa: Przyjaciele php.pl
Postów: 7 494
Pomógł: 302
Dołączył: 31.03.2004

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


Article to jest obiekt reprezentujący jeden wiersz a tabeli article.
Możesz taki obiekt pobrać z bazy:
  1. <?php
  2.  
  3. $article = ArticlePeer::retrieveByPk(1);
  4. echo $article->getTitle();
  5.  
  6. ?>
lub stworzyć nowy i zapisać go do bazy:
  1. <?php
  2.  
  3. $article = new Article();
  4. $article->setTitle('Tytuł');
  5. $article->save();
  6.  
  7. ?>


Odnoszę wrażenie, że korzystasz z czegoś czego kompletnie nie rozumiesz. Wróć do dokumentacji Propela i symfony i zacznij od nowa.
Go to the top of the page
+Quote Post
Lk_hc
post
Post #20





Grupa: Zarejestrowani
Postów: 36
Pomógł: 1
Dołączył: 12.06.2006

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


Odnosisz takie wrażenie, bo, przyznaje trochę z pośpiechem przeleciałem ten rozdział. Po prostu w totalną zmyłe mnie wprowadziło to get

SUKCES - wyciągnąłem tytuł z bazy, to chyba znaczy że nie tak "kompletnie nie rozumiem", no wiesz ;] tylko ten peer poprostu no i kwestia pomyłki metody statycznej z obiektem, plama. fuckt.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 07:54