问题标签 [zend-controller-router]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
273 浏览

zend-acl - 我如何构造 Zend_Controller_Router_Route 来处理相同位置的动作和参数键?

这是我在 JSON 中的路线:

这允许像下面这样的 URI,并且到目前为止运行良好:

但是,我希望:action位置也允许以下 URI:

到目前为止,我在App_Controller_Action::__call()中完成了这项工作。它可以工作,但是很混乱,因为在发送请求之前,该操作在技术上仍被列为“搜索”或“术语”,并且这些键的值被分配给 id。

这导致我在前端控制器插件中执行的 Zend_Acl 检查出现问题。作为一种解决方法,我添加了“搜索”和“类型”作为我的 ACL 的权限,但同样,这很混乱。ACL 应该保持这些语义的清洁。我希望在请求到达 ACL 插件之前对其进行修改。

0 投票
1 回答
604 浏览

zend-framework - ZF:自定义路由,将所有部分作为参数

希望有人可以在这里帮助我。

我有一个 Zend 路由器来处理向篮子添加东西。现在我正在构建一个定制器模块,因此用户可以在产品的指定部分添加尽可能多的不同颜色的部件。

我的基本网址是这样的

我现在的router.ini是这样的

我真正想要容纳的是这样的网址。

基本上 size/type/ 后面的一切都是一个部分、一个颜色或一个部分(右、左、两者)

如何在大小/类型之后获得所有 url-path-parts 的单个数组?

如果我只是使用$this-_request->getParams();,我会得到一个这样的数组

我可以遍历该数组,将所有键和值作为值添加到新数组中。问题是,如果 url-path-parts 的数量是奇数,则最后一部分将不会返回给 params,因为它被视为一个空变量,因此不会添加到 params 数组中。

任何想法都非常感谢:)

0 投票
1 回答
415 浏览

zend-framework - Zend 框架在使用路由器时不寻找骆驼式操作

大家好,我有点麻烦,希望有人能对此有所了解。

出于某种奇怪的原因,我的路线出现说动作不存在,除非我将骆驼外壳更改为该动作名称的所有小写字母,然后它可以正常工作。但这违反了命名约定!我也不想让我的代码马虎。

这是我的路线:

现在对我来说,这应该在 ArtistController 中查找动作 saveArtistsAction,但它不会引发此错误:

哎呀,您遇到了以下错误。动作“saveartist”不存在并且没有被困在 __call()

所以它似乎已经删除了我在路由器中的骆驼外壳,因为艺术家的 a 现在在错误中是小写的,如果我重命名我的动作以匹配它,它就可以工作!

知道为什么它不寻找 saveArtist 吗?

我意识到我可以将它重命名为保存,因为它是艺术家对象的一部分,但现在我发现我想在未来的其他时间解开之前了解这一点。

提前感谢任何帮助:)


我一发送这个我就想通了,但我觉得其他人可能会犯同样的错误,所以最好把这个留在这里并告诉解决方案!

在路由器中,它仍然是 URL 格式,我打算使用连字符而不是驼峰式大小写,然后框架可以解决。所以这是我的更正/解决方案:

快乐编码:)

0 投票
2 回答
550 浏览

php - Zend Router(如何将 /administration/users 等 URL 指向 Administration_UsersController)

我想保留旧的默认 Zend 路由器,并且只为管理子页面添加一个路由器,因为控制器的大小正在增长,我想在逻辑上将它们分开一点,并拥有更清晰的 URL。

该文档似乎解释了如何做其他事情,但不是这个......

0 投票
1 回答
190 浏览

php - Zend_Router 省略参数键

我有一个关于 Zend_Controller_Router 的问题。我在我的应用程序中使用了模块化结构。该应用程序建立在 Zend-Framework 之上。正常的路由是这样的:

/modulename/actionname/

因为我总是在我的模块中使用 IndexController,所以没有必要在 url 中提供它。现在我可以像这样附加参数:

/modulename/actionname/paramkey/paramvalue/paramkey/paramvalue

所以这在采埃孚是正常的,我猜。但在某些情况下,我不想在 url 中提供参数键。例如,我希望在 url 中显示博客标题。当然,这是针对 SEO 的:

/blog/show/id/6/this-is-the-blog-title

在这种情况下,blog是模块,show是动作。id是一个参数,6是我要展示的博文的 id。this-is-the-blog-title当然是带有 id 的博文的标题6。问题是,如果我确实assemble()像这样使用路由器的 - 方法:

网址导致:

blog/show/id/6/0/this-is-the-blog-title.html

如您所见, a0已作为键插入。但我希望这个 0 被省略。我尝试使用 blogtitle 作为键,如下所示:

这导致:

blog/show/id/6/this-is-the-blog-title.html/

现在0省略了,但最后我有斜线。

您是否有任何解决方案来获取没有0as 键且没有结尾斜杠的 url?

问候,亚历克斯

0 投票
2 回答
630 浏览

php - Zend Framework 产品目录路径

我需要一些帮助来为我的产品目录构建路线。我想要这样的网址:

/产品/电子产品/14

/产品/电子产品/计算机

/产品/电子产品/电脑/笔记本电脑/4

url 中的最后一个数字显示当前列表页码。

0 投票
3 回答
1598 浏览

zend-framework - Zend_Controller_Action _forward 使用(或滥用)案例

在使用 ZF 开发 Web 应用程序时,我有一个哈哈!关于 Zend_Controller_Action 中的 _forward 方法的时刻。如《程序员参考指南》中所述,当在动作中调用 _forward 方法时,在当前动作完成之前不会执行请求的动作。这就引出了一个问题:

除了表单处理(尽管您可能会将 _forward 请求放在操作结束时),您何时会使用 _forward 操作来有意确保在开始另一个操作之前完成当前操作?有哪些明确的例子?与 ActionStack 相比,使用这种方法有什么缺陷或优势吗?

0 投票
2 回答
926 浏览

php - 使用 Zend_Controller_Router_Route_Hostname 在多个域上运行相同的 Zend_Framework 站点

我需要基于 zend_framework 运行同一个站点以在多个域上运行,并且我的应用程序需要知道它在哪个域上运行。我认为使用 Zend_Controller_Router_Route_Hostname 是个好主意,但我遇到了一些问题。

我的引导程序中有以下代码

我收到以下错误“未指定子域”。我想我追踪到我的布局文件中的 $this->url 在路由与请求 url 匹配之前使用定义的路由来组装 url。如果我将默认值设置为主机名路由,我不会收到错误消息,但布局中的 url 使用默认值而不是当前主机名中的值。

谁能帮我解决这个问题?

0 投票
1 回答
1031 浏览

zend-framework - 如何将此路由重写为ini格式?

我有以下 PHP 代码:

现在我想在我的 application.ini 中有这条路线

我用这段代码试过了,但这不起作用:

有人知道如何解决这个问题吗?

0 投票
2 回答
5396 浏览

php - Zend_Controller_Router_Route

我正在尝试制作一个可以响应此结构的路由器:

module/controller/action/idmodule/controller/action/page

唯一的区别是“id”或“page”。我正在使用这段代码:

问题是在某些情况下我想要:

'http://www.domain.cl/administrador/productos/2' => (module=>administrador, controller=>productos,page=>2)但是路由器“管理员”导致'http://www.domain.cl/administrador/productos/index/0/2' (module=>administrador, controller=>productos,action=>index,id=>0,page=>2)

我对它在这种情况下的工作方式感到非常困惑。我试图制作两个路由器,其中第一个只有“id”参数和另一个“页面”参数。并从 url helper 使用它,如:

  1. $this->url(array('module' => 'administrador', 'controller' => 'productos', 'action' => 'index', 'id' => 0), 'administradorId');

  2. $this->url(array('module' => 'administrador', 'controller' => 'productos', 'action' => 'index', 'page' => 1), 'administradorPg');

但是当我使用路由器时,总是选择最后一个添加到路由器($router->addRoute('routerIdentifier', $route);

谢谢