Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zend_conrtoller
Forum PHP.pl > Forum > PHP > Frameworki
koodlaty
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.
Sabistik
Cytat
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.

Jaśniej bo nie rozumiem ;p
juzwa
o ile się orientuję to chodzi o sprawdzanie
zalogowany/niezalogowany
i kierowanie wg tego

jeśli o to chodzi to swego czasu Sabistik pomógł mi takim rozwiązaniem

http://forum.php.pl/index.php?showtopic=61607&hl=
koodlaty
Już mówię o co mi się rozchodzi...

  1. <?php
  2. class someActionController extends Zend_Controller_Action
  3. {
  4.  function someAction($param)
  5.  {
  6. ...
  7.  }
  8. }
  9. ?>


Jak przekazać parametr do akcji?

tak nie działa:
Kod
http://localhost/someActionController/someAction/someParam/value

tak też nie:
Kod
http://localhost/someActionController/someAction?someParam=value
Sabistik
Dostęp do parametrów masz poprzez:
  1. <?php
  2. Zend_Controller_Request::getParam();
  3. // lub
  4. Zend_Controller_Action::getParam();
  5. ?>
koodlaty
Kurna, czegoś tu wciąż nie kumam...

Czy metody-akcje mogą przyjmować parametry?
Sabistik
Cytat
Kurna, czegoś tu wciąż nie kumam...

Ja tez <:
Cytat
Czy metody-akcje mogą przyjmować parametry?

Ale w jakim celu ? :P
koodlaty
Jeśli akcja będzie odpowiadała np. za usuniecie użytkownika - w jaki sposób przekażemy jej jego identyfikator?
Sabistik
No tak jak napisałem dwa posty wyżej:

Kod
http://localhost/user/delete/id/546

Controller: user
Action: delete
id: 546 ( Zend_Controller_Action::getParam('id'); )

W czym problem ?
koodlaty
Właściwie w niczym - można i tak.

Dzięki za info.

Zastanawiam się tylko dlaczego robić to właśnie w taki sposób, dlaczego parametry nie są przekazywane do metod z automatu jak Pan Bóg przykazał... To może już lepiej użyć:
  1. <?php
  2. Zend_Filter_Input($_GET);
  3. ?>
Mamy odrazu dostępne metody filtrowania wejścia.
SongoQ
Z automatu? Mowisz o parametrach metod? Dla malej ilosci czy dla samego id to by mialo moze sens ale dla bardziej zlozonej struktury mije sie to juz z celem. W wiekszosci frameworkow jest tak jak pisal @Sabistik no moze pomijajac cake bo tam na sile wlozyli id jako parametr metody.
koodlaty
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?
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.