[ZF] nazwa kontrolera w pluginie |
[ZF] nazwa kontrolera w pluginie |
17.06.2008, 15:44:02
Post
#1
|
|
Grupa: Zarejestrowani Postów: 42 Pomógł: 0 Dołączył: 5.05.2008 Ostrzeżenie: (0%) |
Witam.
Napisałem plugin ktory ma na celu sprawdzenie czy uzytkownik jest zalogowany: Kod class Zend_Controller_Plugin_Authorization extends Zend_Controller_Plugin_Abstract { public function __construct() { $auth = Zend_Auth::getInstance(); if(!$auth->hasIdentity()) { $controller= Zend_Controller_Action::getRequest()->getActionName(); } } } Chodzi o to zeby klasa sprawdzala czy uzytkownik jest zalogowany oraz czy zaladowany kontrolelr jest rozny od index, problem tkwi w pobraniu nazwy kontrolera ktory uzytkownik wywolal dostaje blad: Strict Standards: Non-static method Zend_Controller_Action::getRequest() should not be called statically, assuming $this from incompatible context in... Fatal error: Cannot access protected property Zend_Controller_Plugin_Authorization::$_request in ...library/Zend/Controller/Action.php on line 301 Zaznaczam ze jestem poczatkujacy oraz nie zoreintowany za bardzo w OOP, wiec za odpowiedzi typu "link do manuala tam wszystko jest" dziekuje, poniewaz to mi nie pomoglo. |
|
|
17.06.2008, 17:24:44
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 5 724 Pomógł: 259 Dołączył: 13.04.2004 Skąd: N/A Ostrzeżenie: (0%) |
WLasnie link do manuala ci pomoze
http://framework.zend.com/apidoc/core/Zend...n_Abstract.html rozszerzasz klase Zend_Controller_Plugin_Abstract wiec masz dostep do jej metod, m.in. getRequest() a z Requestu pobierasz getControllerName() bo chyba tego szukasz, a nie nazwy akcji. -------------------- Nie lubię jednorożców.
|
|
|
17.06.2008, 18:14:00
Post
#3
|
|
Grupa: Zarejestrowani Postów: 42 Pomógł: 0 Dołączył: 5.05.2008 Ostrzeżenie: (0%) |
zmodyfikowalem tak:
Kod $controller = $this->getRequest()->getControllerName(); dostaje: Fatal error: Call to a member function getControllerName() on a non-object |
|
|
17.06.2008, 18:24:47
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) |
Bo robisz to w konstruktorze - o ile pamiętam pluginy Front Controllera maja specjalne metody, które należy użyć. A tak, nawet nie dajesz Pluginowi się "ustawić".
edit: Proszsz, tutaj bardzo ładnie opisane. Ten post edytował LBO 17.06.2008, 18:26:21 |
|
|
17.06.2008, 18:56:51
Post
#5
|
|
Grupa: Zarejestrowani Postów: 42 Pomógł: 0 Dołączył: 5.05.2008 Ostrzeżenie: (0%) |
dzieki LBO
koncowy kod: Kod class Zend_Controller_Plugin_Authorization extends Zend_Controller_Plugin_Abstract
{ public function dispatchLoopShutdown() { $auth = Zend_Auth::getInstance(); if(!$auth->hasIdentity()) { $name = $this->getRequest()->getControllerName(); } } } |
|
|
17.06.2008, 19:23:48
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) |
ekhm, użyj routeStartup()... jes to pierwsza w kolejności metoda uruchamiana dla pluginu - ty natomiast umieściłeś od w ostatniej To chyba nie pasuje do tego co chcesz zrobić.
|
|
|
17.06.2008, 20:38:47
Post
#7
|
|
Grupa: Zarejestrowani Postów: 42 Pomógł: 0 Dołączył: 5.05.2008 Ostrzeżenie: (0%) |
przy routeStartup() dostaje:
Strict Standards: Declaration of Zend_Controller_Plugin_Authorization::routeStartup() should be compatible with that of Zend_Controller_Plugin_Abstract::routeStartup() in |
|
|
17.06.2008, 20:44:14
Post
#8
|
|
Grupa: Zarejestrowani Postów: 1 415 Pomógł: 117 Dołączył: 7.09.2005 Skąd: Warszawa Ostrzeżenie: (0%) |
Klasa bazowa deklaruje odpowiednie parametry dla tych metod - przepisz je... a nawet nie, podpowiem: routeStartup(Zend_Controller_Request_Abstract $request)
|
|
|
Wersja Lo-Fi | Aktualny czas: 24.04.2024 - 03:50 |