Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Zend_conrtoller, Front controller nie przekazuje parametrow do akcji...
koodlaty
post
Post #1





Grupa: Zarejestrowani
Postów: 118
Pomógł: 3
Dołączył: 6.07.2006
Skąd: Dublin

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


Główny plik - index.php:
  1. <?php
  2. ...
  3. $ctrl = Zend_Controller_Front::getInstance();
  4. $ctrl -> throwExceptions(true);
  5. $ctrl -> setBaseUrl('/sezi4/');
  6. $ctrl -> setRouter(new Zend_Controller_RewriteRouter());
  7.  
  8. if(!$auth_user -> logedInUser)
  9. $ctrl -> setDefaultAction('auth');
  10.  
  11. $ctrl -> run('../../koodlaty/applications/sezi4/controllers');
  12. ?>


Działa prawidłowo. Na podstawie adresu URL Front kontroler wybiera właściwy kontroler i akcję. Niestety nie przekazuje parametrów do metod akcji.

Ten post edytował koodlaty 5.03.2007, 12:38:01
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
koodlaty
post
Post #2





Grupa: Zarejestrowani
Postów: 118
Pomógł: 3
Dołączył: 6.07.2006
Skąd: Dublin

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


Nie, nie! Co innego miałem na myśli mówiąc z automatu. Ja to sobie wyobrażałem tak:

Jest jakiś kontroler i jakaś jego akcja:

  1. <?php
  2. class ctrlController extends Zend_Controller_Action
  3. {
  4. public function actAction($param1, $param2)
  5. {
  6. ...
  7. }
  8. }
  9. ?>


Gdzieś znajduje się link, np.: http://localhost/ctrl/act/param1/value1/param2/value2

Na podstawie tego, czego nauczyłem się z dokumentacji sądziłem, iż uruchomienie metody wygląda mniej więcej tak, że po kliknięciu w taki link nastąpi oczywiście rozebrania adresu URI wewnątrz routera i przekazaniu obiektu żądania - informacji na temat oczekiwanego kontrolera, akcji i podanych parametrów do dispatcher-a, by ten wreszcie uruchomił tą akcję tego kontrolera podając jej parametry czyli upraszczając coś jak:
  1. <?php
  2. $ctrl = new ctrlController();
  3. $ctrl -> actAction(value1, value2);
  4. ?>


Bazując na tym co mi cierpliwie wytłumaczyliście, działa to zgoła inaczej tzn do parametrów muszę dobierać się indywidualnie w każdej metodzie
np tak:
  1. <?php
  2. class ctrlController extends Zend_Controller_Action
  3. {
  4. public function actAction()
  5. {
  6. $filterGET = new Zend_Filter_Input($_GET);
  7. if(!is_numeric($id = $filtratedGET -> getRaw('id')))
  8. throw new Exception('Parametr powinien byc liczba!');
  9.  
  10. ...
  11. }
  12. }
  13. ?>


W związku z tym nie ma sensu podawać nazw oczekiwanych parametrów w definicji metod?
  1. <?php
  2. class ctrlController extends Zend_Controller_Action
  3. {
  4. public function actAction(tu nie ma sensu)
  5. {
  6. ...
  7. }
  8. }
  9. ?>


Dobrze kumam czy całkiem mi się popierdzieliło?
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 8.10.2025 - 18:48