Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [zend][mysql]Nowy rekord
fxBobi
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 5.09.2010

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


Od niedawana zacząłem poznawać Zenda i napotkałem błąd , ale nie wiem co jest powodem . ]

Krótki opis.

Stworzyłem controller - register i do tego konrollera dodałem action newuser
A akcji dodałem odwołanie do modelu "Aplication_Model_Register" , i w modelu wykorzystuje funkcje insert(array())
Dodatkowo Model Register połączyłem z Db-table users .

I gdy w controllerze wywołuje funkcje CreateUser(array('login'=>'Kowalski')); to pojawia się komunikat "Apliaction Error"

Wiem że moj opis jest może nie zbyd jasny dlatego poniżej zawartość każdego z plików.

Controller
  1. <?php
  2.  
  3. class RegisterController extends Zend_Controller_Action
  4. {
  5.  
  6. public function init()
  7. {
  8. /* Initialize action controller here */
  9. }
  10.  
  11. public function indexAction()
  12. {
  13. // action body
  14. }
  15.  
  16. public function newuserAction()
  17. {
  18. $m_register = new Application_Model_Register();
  19. $m_register->creatuser(array(
  20. "login" => "bobi"
  21. ));
  22.  
  23. }
  24.  
  25.  
  26. }
  27.  
  28.  
  29.  


Zawartość modelu register

  1. <?php
  2.  
  3. class Application_Model_Register
  4. {
  5. public function creatuser($array) {
  6. $dbTableUsers = new Application_Model_DbTable_Users();
  7. $dbTableUsers ->insert($array);
  8. }
  9.  
  10.  
  11. }


Zawartośc Db-table
  1. <?php
  2.  
  3. class Application_Model_DbTable_Users extends Zend_Db_Table_Abstract
  4. {
  5.  
  6. protected $_name = 'users';
  7. protected $_primary = 'id';
  8.  
  9.  
  10. }


Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Sephirus
post
Post #2





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


1. Czy dana akcja kontrolera odpalana z przeglądarki:

  1. public function newuserAction()
  2. {
  3. //$m_register = new Application_Model_Register();
  4. //$m_register->creatuser(array(
  5. //"login" => "bobi"
  6. //));
  7.  
  8. }


z zakomentowanymi linijkami w ogóle się odpala?

2. Źle używasz dziedziczenia - nie rozumiesz idei Db_Table. Zamiast:

  1. class Application_Model_Register
  2. {
  3. public function creatuser($array) {
  4. $dbTableUsers = new Application_Model_DbTable_Users();
  5. $dbTableUsers ->insert($array);
  6. }
  7. }
  8.  
  9. class Application_Model_DbTable_Users extends Zend_Db_Table_Abstract
  10. {
  11. protected $_name = 'users';
  12. protected $_primary = 'id';
  13. }


Powinno być:

  1. class Application_Model_Register extends Zend_Db_Table_Abstract
  2. {
  3. protected $_name = 'users';
  4. protected $_primary = 'id';
  5.  
  6. public function creatuser($array) {
  7. $this->insert($array);
  8. }
  9. }


I nawet zmieniłbym nazwę tego modelu z .._Model_Register na .._Model_Users.

Chodzi po prostu o to, że modele robimy dla danej tabeli w bazie bądź danych tabel - nie dla danej operacji.

Zatem nie robimy modelu dla rejestracji tylko model dla użytkowników i w nim między innymi powinna znaleźć się metoda dodająca uzytkownika do bazy wink.gif


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
fxBobi
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 5.09.2010

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


Cytat
Czy dana akcja kontrolera odpalana z przeglądarki:


Tak uruchamia się.

Cytat
Źle używasz dziedziczenia - nie rozumiesz idei Db_Table. Zamiast:


Tak , dopiero raczkuje .


Cytat
$dbTableUsers = new Application_Model_DbTable_Users();
$dbTableUsers ->insert($array);


Tą metodę pobrałem od JREAM (YouTube)

Postępuje zgodnie jak w wyżej podanym filmiku , ale mam błąd.





Go to the top of the page
+Quote Post
Sephirus
post
Post #4





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

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


Ok rozumiem że autor tego filmiku tak założył - że będzie robił modele-modeli smile.gif Można ale to mało efektywne.

Co do twojego błędu to za mało mam informacji by cokolwiek powiedzieć :/

Widać na bank, że coś jest nie tak z bazą danych...

Możesz zrobić jeszcze dwie rzeczy:

1. public function newuserAction() - w tej metodzie kontrolera jeśli zostawisz odkomentowane tylko powołanie obiektu z modelu to czy wywala ten błąd? Jeśli tak to może to być problem z ładowaniem klas do zenda... Nie będę zagłębiał się w filmiku ale sprawdź czy na pewno plik z klasą jest tam gdzie powinien czy nazwya się tak jak powinien (zwróć uwagę na wielkość liter), czy mas odpalony autoloader klas - coś tutaj by wtedy nie grało...

2. Też ciężko mi uwierzyć w to, że zend wyrzuca tylko tekst "Application error". czy nie ma tam nic więcej? Nic więcej nie podaje po tym błędzie? Jesli jest coś jeszcze to wrzuć cały opis tego błędu to zobaczymy z czym walczymy


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post

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 - 04:11