php - 如何在 Zend 中缩短 URL

标签 php zend-framework url

例如,我使用以下 URL 作为用户个人资料/仪表板:

example.com/person/person/profile
example.com/person/person/dashboard

其中人员模块,第二个人员 Controller 个人资料仪表板操作

但我希望如果用户访问以下网址,那么他们应该分别指向上面提到的相同网址:

example.com/person/profile
example.com/person/dashboard

有什么办法可以让我始终从 URL 中删除模块名称吗?请记住我想保留当前的目录结构。

谢谢

最佳答案

您可以使用路由来做到这一点,在您的 Bootstrap 中添加此

protected function _initRoutes()
{
    $config = new Zend_Config_Ini(APPLICATION_PATH . '/configs/routes.ini');
    $router = new Zend_Controller_Router_Rewrite();
    $router->addConfig($config, 'routes');
    Zend_Controller_Front::getInstance()->setRouter($router);
}

然后在您的配置管理器中创建一个名为 routes.ini 的文件,其中将包含您的自定义路由,请尝试这些

routes.person_profile.route = "person/profile"
routes.person_profile.defaults.controller = person
routes.person_profile.defaults.action = profile
routes.person_profile.defaults.module = person

routes.person_dashboard.route = "person/dashboard"
routes.person_dashboard.defaults.controller = person
routes.person_dashboard.defaults.action = dashboard
routes.person_dashboard.defaults.module = person

这里我们定义了两条路由,请记住给每个路由一个唯一的名称,我将它们称为 person_profileperson_dashboard

route 值是将被 controlleractionmodule 值覆盖的 URI,例如,路由 person/profile 将自动分派(dispatch)到 person Controller 、person 模块和 profile行动。

希望有帮助。

关于php - 如何在 Zend 中缩短 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5291610/

相关文章:

javascript - 检测 url 上的更改

jquery 中等效的 php 函数 array_keys

php - Zend_Soap - 错误解析 WSDL : Start tag expected, '<' 未找到

php - HTML5 输入类型电子邮件

php - Lucene 外来字符问题

php - Zend 框架 - "Invalid controller specified"

python-2.7 - Pywinauto 0.6.0 在 Firefox 的编辑控件中访问浏览器 URL

javascript - 删除主干路由中的 "#"

php - 完成文本输入后加载 jquery 函数

Mac OSX 上的 Java 进程在通过网络服务器调用时似乎为 "hang",但在命令行中正常