php - 如何使用 zend 框架获取动态 URL,如 mydomain.com/username

标签 php zend-framework

我正在使用 zend 框架开发应用程序。在应用程序中,我必须为每个用户提供一个 URL,例如 mydomain.com/[username],然后公众将能够查看他的个人资料。 [username] 是特定用户的用户名

但是我怎样才能做到这一点呢?我认为在 ZF mydomain.com/username 中尝试获取名称为 username 的 Controller ,但我应该在此 URL 中显示用户配置文件,如果有其他类似 mydomain.com 的内容,它必须转到正确的 Controller / Controller 1

最佳答案

这似乎出现了很多,有几个选项:

选项一:自定义路由类

我已经发布了一篇博文,其中包含如何使用自定义路由类在 ZF 中实现此目的的详细示例,请参阅:

http://tfountain.co.uk/blog/2010/9/9/vanity-urls-zend-framework

这可能不是最简单的方法,但在我看来它是最好的方法,因为它允许您像设置任何其他路由一样设置用户名路由,并且您仍然可以使用标准的 ZF URL 帮助程序和其他路由工具。

选项 2:扩展路由器

另一种方法是扩展标准 ZF 路由器,然后在执行任何其他操作之前检查用户名路由。像这样的东西:

class My_Router extends Zend_Controller_Router_Rewrite
{
    public function route(Zend_Controller_Request_Abstract $request)
    {
        $pathBits = explode('/', $request->getPathInfo());
        if (!empty($pathBits[0])) {
            // check whether $pathBits[0] is a username here
            // with a database lookup, if yes, set params and return
        }

        // fallback on the standard ZF router
        return parent::route($request);
    }
}

然后您需要告诉前端 Controller 使用您的路由器而不是默认路由器,因此在您的 Bootstrap 中:

protected function _initRoutes()
{
    Zend_Controller_Front::getInstance()->setRouter(new My_Router());
}

将“我的”替换为您的应用程序自己的命名空间。

如果您采用这种方法,则不能为您的用户名路由使用 URL 助手,如果您开始需要添加其他自定义功能,事情会变得有点困惑,因此请改用自定义路由类。

关于php - 如何使用 zend 框架获取动态 URL,如 mydomain.com/username,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3673923/

相关文章:

php - 如何替换 PHP 中的 dynamic_sidebar?

php - 不同的 PHP 压缩库有什么好处?

php - Zend Json 编码和在 javascript 中的使用

php - 检查 htaccess 中的 Zend 注册表变量?

zend-framework - 使用连接在 Zend Select 中设置完整性检查

PHP 警告 : PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/memcached.so' -/usr/lib64/php/modules/memcached. 所以

php - 无法访问php中的环境变量

php - Symfony DomCrawler : Find element with specific attribute value

zend-framework - 在 Controller 中获取加载的配置

javascript - zendframewok 2.2.4安装错误显示openssl扩展