![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 53 Pomógł: 5 Dołączył: 4.12.2013 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Na początek trochę kodu (przykładowe użycie): CreatorController (zf2.localhost/creator/index)
SessionServiceController:
Co chcę osiągnąć: Chcę by po spełnieniu warunku w funkcji checkSession przekierowało mnie do zf2.localhost/authUser/index całość działa gdy bezpośrednio z CreatorController wykonuję toRoute, jednak w sytuacji kilku plików, nie ma sensu powtarzać kilkukrotnie tej samej funkcji, stąd chcę ją mieć w osobnym pliku i tylko się do niej odwoływać (tak jak wyżej). Dlatego proszę o pomoc w wytłumaczeniu co robię źle, że wyświetla mi błąd: Url plugin requires that controller event compose a router; none found Jeżeli jest lepszy sposób na poradzenie sobie z tym to także proszę o nakierowanie. Pozdrawiam. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 14 Pomógł: 0 Dołączył: 3.04.2014 Ostrzeżenie: (0%) ![]() ![]() |
Może coś takiego:
Controller: public function indexAction(){ if( ! $this-> sessionService ->checkSession() ) return $this-> sessionService ->checkSession(); } SessionService: public function checkSession(){ if (empty($this ->session_id->usr_id)){ //$this->redirect()->toUrl("zf2.localhost/authUser/index"); return $this->redirect()->toRoute('creator/default', array('controller'=>'authUser', 'action'=>'index')); } if (!empty($this ->session_id->usr_id)){ return false; } } Za każdym razem zwraca Ci wartość TRUE. W warunku niepusta zmienna jest wartością TRUE ![]() W większości przypadków, u mnie sprawdza się Application/Module.php i onBootstrap a w nim: $app->getEventManager()->attach( 'route', function($e) { $app = $e->getApplication(); $routeMatch = $e->getRouteMatch(); $sm = $app->getServiceManager(); $this->route=$routeMatch->getMatchedRouteName(); //strony wymagające autoryzacji if($this->isPageWithAuth()){ $this->setCss($sm,['admin']); //jeżeli nie jest zalogowany, przenieś do strony logowania if (!$this->UserSession()->isLogged()) { $this->UserSession()->setRedirectReferer($this->route,$routeMatch->getParams()); $response = $e->getResponse(); $response->getHeaders()->addHeaderLine( 'Location', $e->getRouter()->assemble( array(), array('name' => 'auth/login') ) ); $response->setStatusCode(302); return $response; } gdzie w isPageWithAuth() private function isPageWithAuth(){ if($this->route=='auth/login' || $this->route=='auth/register' || $this->route == 'auth/forgot'){ return false; } $routers=explode('/',$this->route); if(isset($routers[0])){ $route=$routers[0]; if($route=='auth' || $route=='admin' || $route=='superadmin' || $route=='webmaster'){ return true; } } return false; } ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.06.2025 - 07:42 |