Question



I use Zend Framework in my web application. I have the next URL: domain/user/user/username. Where first user is a controller in the default module. Second user is a GET variable. username is a value of this variable. All good. But for the good usability I want to have the next URL: domain/user/username. I know that by Zend GET rules it should be as my first variant. But maybe I can do this with mod rewriting or Zend_Route? Help me, please.

Thank you in advance.

Was it helpful?

Solution

Create /application/configs/routes.xml:

<?xml version="1.0" encoding="UTF-8"?>
<routes>
    <user>
      <route>user/:username/*</route>
      <defaults>
          <module>default</module>
          <controller>user</controller>
          <action>view</action>
          <username>0</username>
      </defaults>
    </user>
</routes>

Then in Bootstrap.php:

public function _initRouter()
{
    $front = Zend_Controller_Front::getInstance();
    $router = $front->getRouter();
    $config = new Zend_Config_Xml(dirname(__FILE__) . '/configs/routes.xml');
    $router->addConfig($config);

    return $router;
}

You may also do the same in a lot of other ways, e.g. in application.ini.

OTHER TIPS

In your application.ini, add:

resources.router.routes.article.type = "Zend_Controller_Router_Route"
resources.router.routes.article.route = "user/:username/*"
resources.router.routes.article.defaults.module = "default"
resources.router.routes.article.defaults.controller = "user"
resources.router.routes.article.defaults.action = "view"
resources.router.routes.article.reqs.username = "guest"

and I suggest you to have a look at:

http://framework.zend.com/manual/en/zend.controller.router.html

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top