Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> przekazywanie parametrów do akcji
Apo
post
Post #1





Grupa: Zarejestrowani
Postów: 426
Pomógł: 1
Dołączył: 2.10.2005

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


Witam
Zastanawiałem się ostatnio jak sprawdzić czy w adresie jest podana wystarczająca ilośc parametrów które trzeba przekazać do metody jako argumenty. Pierwszy problem to przekazanie ich do metody w odpowiedniej kolejności np:

  1. <?php
  2. class viewAction extends Action {
  3.  
  4. public function execute($idNewsa, $sort, $param3) // to trzeba przekazac w odpowiedniej kolejności
  5. {
  6.  
  7. }
  8.  
  9. }?>


adres mam w postaci: http://page.pl/controller/action/idNewsa/5...ytitle/param3/n
no i gdy rozdziele adres, tablica jest typu:
array('idNewsa' => 5, 'sort' => 'bytitle', 'param3' => 'n');

No i jak je przekazać do funkcji w poprawnej kolejności. Jeśli inaczej rozwiązaliście ten problem u siebie to piszcie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Apo
post
Post #2





Grupa: Zarejestrowani
Postów: 426
Pomógł: 1
Dołączył: 2.10.2005

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


No właśnie mam teraz coś w rodzaju kontenera. Router odczytuje parametry i przekazuje do dispathera w postaci tablicy z parametrami, która następnie jest przesyłana do klasy akcji. W klasie akcji dostępna jest metoda getParam($name); która zwraca pożądany parametr. Obiekt akcji tworzy klasa Dispather:

  1. <?php
  2. // ... dispather
  3. require_once($url_na_podstawie_get);
  4. $_action = new $_action;
  5. $action->_init($HttpContext, $parameters); // ta metoda zapisuje parametry i context w klasie oraz wywołuje metode Execute
  6. // ... end dispather
  7.  
  8. // metoda _init w klasie akcji:
  9.  
  10. final public function _init(HttpContext $context, $params)
  11. {
  12. $this->context = $context;
  13. $this->parameters = $params;
  14. $this->execute();
  15. }
  16. // end
  17. ?>


No i teraz chciałem w metodzie _init() np sprawdzić czy wszystkie parametry zostały podane w przeciwnym razie zostaniemy przekierowani do innej akcji, ale nie wiem jak to poprawnie rozwiązać bo trzeba gdzieś trzymać wymagne parametry, narazie myślałem nad trzymaniem ich w bazie ale to jest raczej niewydajny sposób. Kolejnym moze być utworzenie w klasie akcji składowej $required_params = array('param1', 'paramn'); gdzie będą wypisane wszystkie parametry potrzebne do wywołania akcji.

Co o tym sądzicie ?
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: 26.12.2025 - 00:09