![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 006 Pomógł: 111 Dołączył: 23.07.2010 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Witam
Cały czak kontynuuję naukę Zenda i natknąłem się na fajny blog: http://www.karolnowicki.pl/zend-framework/artykuly/ i wykonuje w nim krok po kroku wszystko z serii "Praca z bazą danych". W części pierwszej pominąłem dopisek do pliku Boostrap, ale dopisuje wszędzie przedrostek Application. Ale do rzeczy. Model:
Kontrolery (ustawiłem sobie w nim echo, aby wiedzieć gdzie się wysypuje):
Formularz:
I teraz gdy wypełnię formularz to zatrzymuje mi się na wykonaniu metody nowyUzytkownik. Wyświetla się tylko wszystko do echo "odebrałem values"; echo $email; a potem jest pusta, biała strona. Gdy błędnie wypełnię formularz, to pokazują się komunikaty o błędach i wraca do strony z formularzem. W bazie nie ma żadnych nowych rekordów. To samo się dzieje (białą, pusta strona), gdy chcę wyświetlić listę użytkowników (adres/uzytkownicy/lista-uzytkownikow). Plik applacation.ini: Kod [production] phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 includePaths.library = APPLICATION_PATH "/../library" bootstrap.path = APPLICATION_PATH "/Bootstrap.php" bootstrap.class = "Bootstrap" appnamespace = "Application" resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers" resources.frontController.params.displayExceptions = 0 resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/" resources.db.adapter = "pdo_mysql" resources.db.params.host = "localhost" resources.db.params.username = "user" resources.db.params.password = "haslo" resources.db.params.dbname = "naukazend2" resources.db.params.charset = "utf8" resources.db.isDefaultTableAdapter = true [staging : production] [testing : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 [development : production] phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 resources.frontController.params.displayExceptions = 1 Gdzie jest błąd? (IMG:style_emoticons/default/sad.gif) ROZWIĄZAŁEM: Model ma być dziedziczony z Zend_Db_Table (IMG:style_emoticons/default/smile.gif) Ten post edytował IceManSpy 5.04.2011, 22:39:48 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 93 Pomógł: 11 Dołączył: 27.10.2010 Skąd: Kutno/Poznań Ostrzeżenie: (0%) ![]() ![]() |
Łoooo, w zendzie tak nie wyświetlasz błędów, możesz sobie zmienić poniższe trzy linijki w pliku config.ini z:
phpSettings.display_startup_errors = 0 phpSettings.display_errors = 0 resources.frontController.params.displayExceptions = 0 na phpSettings.display_startup_errors = 1 phpSettings.display_errors = 1 resources.frontController.params.displayExceptions = 1 Ale wtedy musisz pamiętać o tym, aby przy puszczaniu strony live przywrócić standardowe ustawienia Powyższy model jest bleeee (oczywiście moim zdaniem)! Dla mnie dobry model ma następujące funkcje: toArray(); __set(); __get(); setOptions($array = null); Dobry model wygląda tak (w zend tools: "create model User"):
I do tego potrzebny jest jeszcze mapper (Komenda w zend_tools "create model UserMapper"):
potrzebujesz jeszcze bazy danych (w zend tools: "create db-table User users"); I stworzenie nowego użytkownika wygląda tak (w kontrolerze):
I powinno wszystko elegancko śmigać. Ten post edytował KrzysiekWildfire 14.04.2011, 21:16:47 |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 426 Pomógł: 1 Dołączył: 2.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
public function fetchAll($select = null){ $result = $this->getDbTable()->fetchAll($select); if (count($result) === 0) return null; $results = array(); foreach ($result as $row){ $results[] = new Application_Model_User($row->toArray()); } return $results; } Mam pytanie @KrzysiekWildfire. Jak rozwiązałeś opakowanie zwracanych danych w metodzie fetchAll, gdy używasz klasy Zend_Paginator? Próbowałem robić:
Niestety po zwróceniu wyników w widoku nie mogę wygenerować paginatora, ponieważ zwracane wyniki nie są instancją klasy Zend_Paginator. // edycja Już rozwiązałem problem. Należy stworzyć filtr: Kod $paginator>setFilter(new Zend_Filter_Callback(array($this, 'getProductObjects'))); następnie tworzymy metodę: Kod <?php
public function getProductObjects($result) { $entries = array(); foreach($result as $row) { $entries[] = new Application_Model_Product($row instanceof Zend_Db_Table_Row ? $row->toArray(): $row); } return $entries; } ?> Ten post edytował Apo 29.04.2011, 22:29:56 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 19:22 |