Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to add variable at the start of the URL in Zend Framework?

I am trying here to create url, like:

/admin/login
/moderator/login

both the request would be served by same controller & action made for login, i.e. /account/login/<type>

Currently, all I am able to make the following URL:

/login/admin

/login/moderator

My current config file looks like the following:

resources.router.routes.login.route = "login/:type"
resources.router.routes.login.defaults.controller = "account"
resources.router.routes.login.defaults.action = "login"

I can't figure out, on how to put the type variable at the start of URL, I tried it but it gives server error. edit

I got this done, but can't understand why this didn't work earlier:

resources.router.routes.login.route = ":type/login"
resources.router.routes.login.defaults.controller = "account"
resources.router.routes.login.defaults.action = "login"

edit

Is it possible to make this arrangement more flexible, so that: /login => /admin/login

I am not looking for solution via .htaccess

like image 660
s_s_ Avatar asked Aug 30 '12 11:08

s_s_


1 Answers

Add the following to your Bootstrap.php

function _initRoutes() {
    $front_controller = Zend_Controller_Front::getInstance();
    $router = $front_controller->getRouter();

    $router->addRoute('login', new Zend_Controller_Router_Route(
        '/:type/login', array('controller' => 'account', 'action' => 'login')
    ));
}

from your loginAction() use:

$this->getRequest()->getParam('type');

Simple?

like image 79
Karma Avatar answered Oct 18 '22 11:10

Karma