Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [ZendFramework]Wieleokrotnie powtarzany kawałek kodu
johnyMajster
post
Post #1





Grupa: Zarejestrowani
Postów: 151
Pomógł: 2
Dołączył: 2.08.2012
Skąd: Wrocław

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


Witam serdecznie w celu sprawdzenia czy użtkownik jest zalogowany stosuję cos takiego z Gajdy:
  1. public function preDispatch()
  2. {
  3. $auth = Zend_Auth::getInstance();
  4. if (!$auth->hasIdentity()) {
  5. return $this->_helper->redirector(
  6. 'index',
  7. 'auth',
  8. 'default'
  9. );
  10. }
  11. $this->view->identity = $auth->getIdentity();
  12. }


Mam jednak pewien kontroler który nie moze byc predispatch poniewaz tylko niektóre akcje są chronione.

Chciałbym zapytac co zrobic z powyzsza funkcją aby wykorzystywac ją w kazdej wybranej akcji z osobna a nie predispatchowac. Mogę robic:
a)kopiuj wklej w kazdej akcji ale to bez sensu
b)Stworzyc w library klase z taką funkcją i ją wywołac (f statyczna?)
c)...questionmark.gif?

Ten post edytował johnyMajster 9.08.2012, 13:31:06
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
irmidjusz
post
Post #2





Grupa: Zarejestrowani
Postów: 279
Pomógł: 60
Dołączył: 25.02.2012

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


action helper powinien się nadać


--------------------
there is much to be learned
Go to the top of the page
+Quote Post
murwazy
post
Post #3





Grupa: Zarejestrowani
Postów: 53
Pomógł: 5
Dołączył: 13.04.2007
Skąd: Szczecin

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


  1. function preDispatch() {
  2.  
  3. $this_action_name = $this->_request->getActionName(); // nazwa akcji, np account-edit
  4.  
  5. $must_login = array('account', 'account-edit'); // akcje, dla ktorych wymagamy logowania
  6.  
  7. if (in_array($this_action_name, $must_login)) { // sprawdzenie czy dana akcja jest wymagana
  8. $u = new Zend_Session_Namespace('user');
  9. if (empty($u->id)) { // jesli nie jest zalogowany
  10. $u->back_url = $_SERVER['REQUEST_URI']; // zapisuje aktualnego urla - czyli tego, na ktorego chcialbym sie dostac
  11. $this->_redirect($this->_url->url(array($this->lang_s, 'system', 'login'), 'action_method')); // skok do logowania
  12. }
  13. }
  14.  
  15. parent::preDispatch();
  16. }
  17.  

mozesz zapakowac to w metode, dodac ja do klasy bazowej kontrolera a w akcji tylko wywolywac - bedzie rozsadniej ale idea zostaje taka sama: wskazujesz ktore akcje sa wymagane w ramach danego kontrolera
Go to the top of the page
+Quote Post
Psajkus
post
Post #4





Grupa: Zarejestrowani
Postów: 45
Pomógł: 5
Dołączył: 26.06.2011

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


użyj acl'a
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 Aktualny czas: 19.08.2025 - 10:15