问题标签 [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.
zend-acl - 我如何构造 Zend_Controller_Router_Route 来处理相同位置的动作和参数键?
这是我在 JSON 中的路线:
这允许像下面这样的 URI,并且到目前为止运行良好:
但是,我希望:action位置也允许以下 URI:
到目前为止,我在App_Controller_Action::__call()中完成了这项工作。它可以工作,但是很混乱,因为在发送请求之前,该操作在技术上仍被列为“搜索”或“术语”,并且这些键的值被分配给 id。
这导致我在前端控制器插件中执行的 Zend_Acl 检查出现问题。作为一种解决方法,我添加了“搜索”和“类型”作为我的 ACL 的权限,但同样,这很混乱。ACL 应该保持这些语义的清洁。我希望在请求到达 ACL 插件之前对其进行修改。
zend-framework - ZF:自定义路由,将所有部分作为参数
希望有人可以在这里帮助我。
我有一个 Zend 路由器来处理向篮子添加东西。现在我正在构建一个定制器模块,因此用户可以在产品的指定部分添加尽可能多的不同颜色的部件。
我的基本网址是这样的
我现在的router.ini是这样的
我真正想要容纳的是这样的网址。
基本上 size/type/ 后面的一切都是一个部分、一个颜色或一个部分(右、左、两者)
如何在大小/类型之后获得所有 url-path-parts 的单个数组?
如果我只是使用$this-_request->getParams();
,我会得到一个这样的数组
我可以遍历该数组,将所有键和值作为值添加到新数组中。问题是,如果 url-path-parts 的数量是奇数,则最后一部分将不会返回给 params,因为它被视为一个空变量,因此不会添加到 params 数组中。
任何想法都非常感谢:)
zend-framework - Zend 框架在使用路由器时不寻找骆驼式操作
大家好,我有点麻烦,希望有人能对此有所了解。
出于某种奇怪的原因,我的路线出现说动作不存在,除非我将骆驼外壳更改为该动作名称的所有小写字母,然后它可以正常工作。但这违反了命名约定!我也不想让我的代码马虎。
这是我的路线:
现在对我来说,这应该在 ArtistController 中查找动作 saveArtistsAction,但它不会引发此错误:
哎呀,您遇到了以下错误。动作“saveartist”不存在并且没有被困在 __call()
所以它似乎已经删除了我在路由器中的骆驼外壳,因为艺术家的 a 现在在错误中是小写的,如果我重命名我的动作以匹配它,它就可以工作!
知道为什么它不寻找 saveArtist 吗?
我意识到我可以将它重命名为保存,因为它是艺术家对象的一部分,但现在我发现我想在未来的其他时间解开之前了解这一点。
提前感谢任何帮助:)
我一发送这个我就想通了,但我觉得其他人可能会犯同样的错误,所以最好把这个留在这里并告诉解决方案!
在路由器中,它仍然是 URL 格式,我打算使用连字符而不是驼峰式大小写,然后框架可以解决。所以这是我的更正/解决方案:
快乐编码:)
php - Zend Router(如何将 /administration/users 等 URL 指向 Administration_UsersController)
我想保留旧的默认 Zend 路由器,并且只为管理子页面添加一个路由器,因为控制器的大小正在增长,我想在逻辑上将它们分开一点,并拥有更清晰的 URL。
该文档似乎解释了如何做其他事情,但不是这个......
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
省略了,但最后我有斜线。
您是否有任何解决方案来获取没有0
as 键且没有结尾斜杠的 url?
问候,亚历克斯
php - Zend Framework 产品目录路径
我需要一些帮助来为我的产品目录构建路线。我想要这样的网址:
/产品/电子产品/14
/产品/电子产品/计算机
/产品/电子产品/电脑/笔记本电脑/4
url 中的最后一个数字显示当前列表页码。
zend-framework - Zend_Controller_Action _forward 使用(或滥用)案例
在使用 ZF 开发 Web 应用程序时,我有一个哈哈!关于 Zend_Controller_Action 中的 _forward 方法的时刻。如《程序员参考指南》中所述,当在动作中调用 _forward 方法时,在当前动作完成之前不会执行请求的动作。这就引出了一个问题:
除了表单处理(尽管您可能会将 _forward 请求放在操作结束时),您何时会使用 _forward 操作来有意确保在开始另一个操作之前完成当前操作?有哪些明确的例子?与 ActionStack 相比,使用这种方法有什么缺陷或优势吗?
php - 使用 Zend_Controller_Router_Route_Hostname 在多个域上运行相同的 Zend_Framework 站点
我需要基于 zend_framework 运行同一个站点以在多个域上运行,并且我的应用程序需要知道它在哪个域上运行。我认为使用 Zend_Controller_Router_Route_Hostname 是个好主意,但我遇到了一些问题。
我的引导程序中有以下代码
我收到以下错误“未指定子域”。我想我追踪到我的布局文件中的 $this->url 在路由与请求 url 匹配之前使用定义的路由来组装 url。如果我将默认值设置为主机名路由,我不会收到错误消息,但布局中的 url 使用默认值而不是当前主机名中的值。
谁能帮我解决这个问题?
zend-framework - 如何将此路由重写为ini格式?
我有以下 PHP 代码:
现在我想在我的 application.ini 中有这条路线
我用这段代码试过了,但这不起作用:
有人知道如何解决这个问题吗?
php - Zend_Controller_Router_Route
我正在尝试制作一个可以响应此结构的路由器:
module/controller/action/id
和module/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 使用它,如:
$this->url(array('module' => 'administrador', 'controller' => 'productos', 'action' => 'index', 'id' => 0), 'administradorId');
$this->url(array('module' => 'administrador', 'controller' => 'productos', 'action' => 'index', 'page' => 1), 'administradorPg');
但是当我使用路由器时,总是选择最后一个添加到路由器($router->addRoute('routerIdentifier', $route);
)
谢谢