Zend Framework网站/用户名

时间:2011-08-01 07:01:50

标签: zend-framework

我使用Zend Framework开发的应用程序之一需要通过website.com/username访问用户的个人资料页面,而其他页面应该通过website.com/controller_name/action_name访问

我不太清楚如何实现这一点,但是,我觉得可以通过.htaccess文件中的一些调整来完成。

有人可以帮助我吗?

非常感谢提前

2 个答案:

答案 0 :(得分:2)

如前所述,您可以使用自定义路由来路由单级请求。但是,这也将覆盖默认路由。如果您正在使用模块,则此功能将不再有效example.com/<module>

我以前做过这个,但仅限于静态页面。我想要这个:

 example.com/about 

而不是:

example.com/<some-id>/about 

同时保持默认路线,这样仍然有效

example.com/<module>
example.com/<controller>

我这样做的方法是使用插件来测试我的请求是否可以发送。如果无法使用默认路由调度请求,那么我会将请求更改为正确的模块以加载我的页面。这是一个示例插件:

class My_Controller_Plugin_UsernameRoute extends Zend_Controller_Plugin_Abstract
{
    public function preDispatch(Zend_Controller_Request_Abstract $request)
    {
        $dispatcher = Zend_Controller_Front::getInstance()->getDispatcher();

        if (!$dispatcher->isDispatchable($request)) {

            $username = $request->getControllerName();

            $request->setModuleName('users');
            $request->setControllerName('dashboard');
            $request->setActionName('index');
            $request->setParam('username', $username);

            /** Prevents infinite loop if you make a mistake in the new request **/
            if ($dispatcher->isDispatchable($request)) {
                $request->setDispatched(false);
            }

        }

    }
}

答案 1 :(得分:-1)