Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inny][Fuel] problem z before()
Forum PHP.pl > Forum > PHP > Frameworki
acidm
Mam 2 problemy :
1. Wyczytałem że before() w kontrolerze wywoływane jest przed metodą danego kontrolera chyba że ta nie istnieje ,ale z moich obserwacji wynika że before() wykonywane jest nawet gdy metoda nie istnieje.
2.Podobny problem tyle że z get_index().Owa metoda wykonywana jest nawet gdy tablica get jest pusta.

Konfiguracja fuel-a domyślna.

  1. <?php
  2.  
  3. class Controller_Tester extends Controller
  4. {
  5. public function before()
  6. {
  7. ?>
  8.  
  9. GET
  10. <form>
  11. <input type="text" name="a" value="" />
  12. <input type="submit" value="" />
  13. </form>
  14. <br>
  15. POST
  16. <form method="POST">
  17. <input type="text" name="a" value="" />
  18. <input type="submit" value="" />
  19. </form>
  20. <?php
  21. }
  22.  
  23. public function post_index()
  24. {
  25. echo ' to jest post <br> ';
  26. var_export($_POST);
  27. }
  28.  
  29. public function get_index()
  30. {
  31. echo ' to jest get <br> ';
  32. var_export($_GET);
  33. }
  34.  
  35. }
  36.  

W htaccess ustawione mam usuwanie index.php.

Wywołanie http://localhost/tester/nieistniejacametoda daje formularze z before()+ domyślna strona błędu 404.
Wywołanie http://localhost/tester wyświetla pustą tablice get z get_index(), post_index() działa normalnie.

Coś trzeba ustawić,to bug czy ja coś spartoliłem?
Ps.Sorry że tak trzaskam echo w kontrolerze ale to żeby sie nie rozpisywać.
phpion
1. Wystarczy spojrzeć do core/classes/viewmodel.php na linie 266 - 268:
  1. $this->before();
  2. $this->{$this->_method}();
  3. $this->after();

Wygląda na to, że before() jest jednak zawsze wywoływana. To, że u siebie walisz formularz na wyjście w tej metodzie to już inna sprawa.
2. get_ i post_ oznaczają metodę obsługi żądania, a nie czy tablica $_GET/$_POST jest pusta. Standardowo żądanie leci getem dlatego odpala Ci się get_index. Jeśli chcesz wykonać akcję tylko wtedy gdy $_GET nie jest pusta to daj sobie warunek !empty($_GET).
acidm
dzięki smile.gif
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.