Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [inny][Fuel] problem z before(), routing fuel
acidm
post 7.10.2013, 11:06:45
Post #1





Grupa: Zarejestrowani
Postów: 110
Pomógł: 3
Dołączył: 12.03.2011
Skąd: Opole

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


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ć.

Ten post edytował acidm 7.10.2013, 12:14:58
Go to the top of the page
+Quote Post
phpion
post 8.10.2013, 11:39:43
Post #2





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




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).
Go to the top of the page
+Quote Post
acidm
post 8.10.2013, 12:13:56
Post #3





Grupa: Zarejestrowani
Postów: 110
Pomógł: 3
Dołączył: 12.03.2011
Skąd: Opole

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


dzięki smile.gif
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 Wersja Lo-Fi Aktualny czas: 21.06.2025 - 04:42