views:

406

answers:

2
<?php
 class PI_Controller_Plugin_AssetGrabber extends Zend_Controller_Plugin_Abstract
{
public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request)
{
    /*
        The module name
    */
    $moduleName = $request->getModuleName();
    /*
        This modules requires the user to be loggedin in order to see the web pages!
    */
    $loginRequiredModules = array('admin');

    if (in_array($moduleName,$loginRequiredModules)) {
        $adminLogin = new Zend_Session_Namespace('adminLogin');
        if (!isset($adminLogin->loggedin)) {
            /*--------------------------------------
               Here I want to redirect the user
            */
             $this->_redirect('/something');
        }
    }   
}
}

I'm trying to do a redirect $this->_redirect('/something') but doesn't work! Do you know how can I do a redirect in this case?

Best Regards,

+2  A: 
<?php
class AlternativeController extends Zend_Controller_Action
{
    /**
     * Redirector - defined for code completion
     *
     * @var Zend_Controller_Action_Helper_Redirector
     */
    protected $_redirector = null;

    public function init()
    {
        $this->_redirector = $this->_helper->getHelper('Redirector');
    }

    public function myAction()
    {
        /* Some Awesome Code */

        $this->redirector('targetAction', 'targetController');
        return; //Never reached!
    }
}

You need to get the redirector helper, then you can define the targetAction and targetController with the redirector. That should do it.

Urda
In your code you can use `$this->_redirect` but If you look at my code you will see that I'm wrting an Asset Plugin Controller.
Uffo
Uffo you still need to get the helper regardless. You can also use `$this->_redirector->gotoUrl('/my-controller/my-action/param1/test/param2/test2');`
Urda
I don't get it, why I have to create a controller in order to use an helper, I want to use that helper in my plugin, not in my controller.
Uffo
The controller was the example I gave, the method is identical for other purposes. Just go read the Framework manual at this point.
Urda
+1  A: 

Either use Zend_Controller_Action_HelperBroker to get the redirect helper or do the redirect directly from the Request object.

See the examples given in

Gordon
Maybe I am going crazy... but that link is the URL for this very page...
Urda
@Urda Doh! Updated :)
Gordon