Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [ZF] nazwa kontrolera w pluginie
Forum PHP.pl > Forum > PHP > Frameworki
JarCzeS
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.
dr_bonzo
WLasnie link do manuala ci pomoze smile.gif

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.
JarCzeS
zmodyfikowalem tak:
Kod
$controller = $this->getRequest()->getControllerName();

dostaje:
Fatal error: Call to a member function getControllerName() on a non-object
LBO
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.
JarCzeS
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();                        
        }
    }
}
LBO
ekhm, użyj routeStartup()... jes to pierwsza w kolejności metoda uruchamiana dla pluginu - ty natomiast umieściłeś od w ostatniej smile.gif To chyba nie pasuje do tego co chcesz zrobić.
JarCzeS
przy routeStartup() dostaje:

Strict Standards: Declaration of Zend_Controller_Plugin_Authorization::routeStartup() should be compatible with that of Zend_Controller_Plugin_Abstract::routeStartup() in
LBO
Klasa bazowa deklaruje odpowiednie parametry dla tych metod - przepisz je... a nawet nie, podpowiem: routeStartup(Zend_Controller_Request_Abstract $request)
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.