gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-10-31 22:48:55 25 4
gpt4 key购买 nike

我正在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com