Zend 反向匹配路由返回当前 URL

2024-04-12

我正在使用 Zend Framework,并尝试设置一些自定义路由。 这些在调度期间似乎工作正常,但反向匹配根本不起作用。

这些是我设置的路线。

$router->addRoute('category', new Zend_Controller_Router_Route(
    'categories/:category',
    array(
        'controller' => 'category',
        'action' => 'modify',
    )
));

$router->addRoute('categories', new Zend_Controller_Router_Route_Static(
    'categories',
    array(
        'controller' => 'category',
        'action' => 'index'
    )
));

如果我现在去http://example.com/categories http://example.com/categories,执行正确的控制器和操作(category.index)。如果我去http://example.com/categories/5 http://example.com/categories/5,我收到以下错误:

Fatal error: Uncaught exception 'Zend_Controller_Router_Exception' with 
message 'category is not specified'

向 :category 添加默认值可以解决此问题(欢迎提出建议)。 但这不是主要问题。

每当我的应用程序执行时$this->url(...),返回值始终是当前 URL。很快http://example.com/categories http://example.com/categories,如果我跑

echo $this->url(
    array('controller' => 'category', 'action' => 'modify', 'category' => 5)
);

返回值为http://example.com/categories。我完全被难住了..

即使我尝试绕过默认路由器并执行以下操作,问题仍然存在

$router->removeDefaultRoutes();
$router->addRoute('default', new Zend_Controller_Router_Route(
    '*', 
    array('controller' => 'index', 'action' => 'index')
));

有没有对 Zend 路由有更多经验的人想尝试一下这个?

干杯, 乔恩


尝试改变这一行

echo $this->url(array('controller' => 'category', 'action' => 'modify', 'category' => 5))

into

echo $this->url(array('controller' => 'category', 'action' => 'modify', 'category' => 5), 'category')

第二个参数是 url 函数应该使用的路由名称。如果未通过,助手将使用当前路线。

@Edit

经过更深入的研究,我找到了解决您问题的另一种解决方案,如果您不想每次都传递路由器名称,您的代码应该如下所示:

$router->addRoute('category', new Zend_Controller_Router_Route(
    'categories/:id',
    array(
        'controller' => 'category',
        'action' => 'modify',
        'id' => 0
    ),
    array(
      'id' => '\d+'
    )
 ));

$router->addRoute('categories', new Zend_Controller_Router_Route_Static(
    'categories',
    array(
        'controller' => 'categories',
        'action' => 'index'
    )
)); 

这将设置路由器部分,现在在视图中调用 url 帮助器。

<?php echo $this->url(array('controller' => 'category', 'action' => 'modify', 'id' => 5), null, true);?><br/>
<?php echo $this->url(array('controller' => 'category', 'action' => 'index'), null, true);?><br/>

输出应该是:

/类别/5

/类别

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Zend 反向匹配路由返回当前 URL 的相关文章

  • PHPExcel下载文件

    我想下载使用 PHPExcel 生成的 Excel 文件 我按照以下代码PHPExcel 强制下载问题 https stackoverflow com questions 26265108 phpexcel force download i
  • PHP解析xml文件错误

    我正在尝试使用 simpleXML 来获取数据http rates fxcm com RatesXML http rates fxcm com RatesXML Using simplexml load file 我有时会遇到错误 因为这个
  • 如何在MAMP中设置环境变量?

    如何在 MAMP 版本 3 3 中设置环境变量 我可以在我的 PHP 应用程序中使用它 我已经更新了 Applications MAMP Library bin envvars and envvars std file并添加以下行 Lice
  • 使用 PHP 将值插入可编辑 PDF,并保持可编辑状态

    我有一个带有可编辑字段的 PDF 我希望将 HTML 表单中的值传递到此 PDF 中 我尝试过使用 FPDF 并且它有效 但是将值传递到 PDF 后 pdf 中的字段不再可编辑 另一个缺点是 在将值传递到 PDF 时 我们必须为每个字段指定
  • Symfony2中如何获取所有post参数? [复制]

    这个问题在这里已经有答案了 我想获取a的所有post参数symfony http symfony com Form I used all parameter this gt get request gt getParameterHolder
  • 使用 php 更改白天和黑夜的背景?

    我正在制作一个 tumblr 页面 我的 html 页面有两种不同的背景 我希望白天背景从早上 7 点到晚上 8 点显示 夜间背景从晚上 8 点到早上 7 点显示 我决定用 php 来做这件事 但对于 php 来说我是个新手 我的朋友给我发
  • 将函数中的会话变量传递给 codeigniter 中的助手

    这就是我正在尝试做的事情 这是控制器中的功能 public function get started if test login this gt session gt all userdata this gt load gt view te
  • AWS S3 上传的图像已损坏

    我正在 AWS ec2 ubuntu 机器上工作 我的代码在 cakephp 中 当我尝试将任何图像上传到 AWS S3 时 它都会损坏 虽然它在核心 php 代码中运行良好 这是我的控制器代码 if this gt User gt sav
  • 运行PHPUnit测试时如何避免内部调用函数?以及如何设置内部性能的模拟数据?

    我有一个类 Receipt php
  • Laravel 广播:通知与事件

    我阅读了 laravel 文档Events and Notifications 似乎我们可以触发一个事件 并从该事件中触发 使用ShouldBroadcast接口 将其广播到我理解的 laravel echo 另一方面我们可以使用通知via
  • PHP 中的 Preg_replace

    我想替换 中包含的字符串中的内容content 它是多行等 preg replace 函数应该删除整个 com 没有垫子 蒙特 尝试这个 result preg replace s replacement content subject
  • Laravel 5.2 带有可变参数的命名路由用法

    我有这样的路线 Open New Subscription page Route get account subscriptions create menu uses gt Subscriptions SubscriptionControl
  • PHP 中的 NOW() 函数

    是否有 PHP 函数以与 MySQL 函数相同的格式返回日期和时间NOW 我知道如何使用date 但我想问是否有专门用于此的功能 例如 返回 2009 12 01 00 00 00 您可以使用date https www php net m
  • PHP中如何识别服务器IP地址

    PHP中如何识别服务器IP地址 对于服务器 ip 来说是这样的 SERVER SERVER ADDR 这是港口的 SERVER SERVER PORT
  • 如何用javascript正确读取php cookies

    考虑这个 php 和 javascript 代码 然后我在控制台中看到的是 utma 111872281 291759993 1444771465 1445374822 1445436904 4 utmz 111872281 1444771
  • 通过JS Laravel访问存储目录

    有没有办法访问storage目录 该目录已经链接到publicJS 中的目录 我正在尝试制作一个上传图片的表单 验证脚本 if request gt hasFile photos marker gt photos request gt ph
  • 如何在没有引用的情况下复制对象?

    PHP5 OOP 有据可查对象通过引用传递 http php net manual en language oop5 references php默认情况下 如果这是默认的 在我看来 有一种非默认的方式可以在没有参考的情况下进行复制 如何
  • Azure 上的“phpcomposer.phar install”出现“无法终止进程”错误

    我正在尝试将我的 Symfony 2 应用程序部署到 Microsoft Azure 网站云 为此 我按照本指南中的步骤操作http symfony com doc current cookbook deployment azure web
  • postgreSQL 在 WAMP 上的集成

    我刚刚在 Windows 7 上安装了 postgreSQL 我正在尝试将 postgreSQL 与 WAMP 服务器集成 为此 我在 httpd conf 和 php ini 文件中进行了以下更改 1个加载模块c path to libp
  • 将数组拆分为特定数量的块

    我知道array chunk 允许将数组拆分为多个块 但块的数量根据元素的数量而变化 我需要的是始终将数组拆分为特定数量的数组 例如 4 个数组 以下代码将数组分为 3 个块 两个块各有 2 个元素 1 个块有 1 个元素 我想要的是将数组

随机推荐

  • Python ImportError:无法在 virtualenv 中导入名称“_imagingtk”

    我想开始使用枕头 但遇到了一些问题 起初 我以为我可以简单地pip install pillow 所以我激活了我的 virtualenv 并做到了这一点 当它不起作用时 我意识到我需要为枕头安装一些依赖项 安装 http pillow re
  • R - 在城市地图上安装网格并将数据输入到网格方块中

    我试图在圣何塞上放置一个网格 如下所示 圣何塞网格 https i stack imgur com U8RxX png 您可以使用以下代码直观地制作网格 ca cities tigris places state CA using tigr
  • 使用 terraform 为现有虚拟机启用 Azure Monitor

    我正在尝试为现有虚拟机启用 azure 监视器功能 该功能使用 terraform 检查虚拟机的运行状况和性能 但我无法找到相应的文档 你能帮我做同样的事情吗 因为我想要对天蓝色进行详细的监控 要在现有虚拟机上启用 VMinsights 您
  • 我们如何将 JWT 令牌存储在 Http only cookie 中?

    我正在创建登录模块 用户将输入用户名和密码 如果用户验证成功 服务器将返回 JWT 令牌 我将使用 JWT 令牌来验证 React js 中的不同 API 调用 现在我担心的是 我发现了一些与此相关的文章 然后我发现我们可以使用仅 http
  • 从数据列(字符串)中提取字符前后的元素

    我想提取字符串中某些字符之前和之后的字符 其中大部分位于 pandas 数据帧列中 基本上我想从我的主要数据帧中获取并合并在一起是从我的 应变 和 区域 列中获取以下项目 i 原始菌株 链霉菌 sp QL40 O ii 原始地区 区域1 1
  • Python urllib2 响应头

    我正在尝试提取 URL 请求的响应标头 当我使用firebug分析URL请求的响应输出时 它返回 Content Type text html 但是当我使用 python 代码时 urllib2 urlopen URL info 结果输出返
  • Jax-RS 中可选的 @PathParam

    我有一项服务 其中路径的最后一部分是可选的 用户都可以输入 mypath and mypath param1 我尝试使用正则表达式来过滤路径的最后部分 Path mypath param1 param1 我使用 RestEasy 作为我的
  • 使用 IF 语句时如何将 shell 命令拆分为多行?

    当命令是 shell 的一部分时 如何将命令拆分为多行if陈述 这有效 if fab fabfile deploy fabfile py forward agent disable known hosts deploy target the
  • 有没有优化 R 性能的文档? [复制]

    这个问题在这里已经有答案了 我对 R 相当陌生 令我印象深刻的一件事是它运行得相当慢 有没有优化R的文档 比如优化Python描述的很好here http wiki python org moin PythonSpeed Performan
  • 防止/禁用 Xcode 滚动导航

    每当我在故事板模式下使用 Xcode 时 我都会用触控板滚动 如果我向左滚动太远 Xcode 会将我带到我正在处理的最后一个 m h 文件 这太令人沮丧了 我不希望能够向左或向右滑动两根手指来在 Xcode 中导航 但我真的很喜欢 Safa
  • 将 .git 文件夹在工作树层次结构中向上移动

    昨天 我在 git 存储库上执行了其中一项操作 请参阅下面的代码片段 以便有效地将我的项目向上移动文件夹层次结构中的几个文件夹 这基本上列出了所有文件并向它们添加前缀文件夹名称并相应地更新索引 旧布局 Root Sublevel 1 Sub
  • 为什么我的应用没有在 Google Play 上显示?刚刚发布

    我只是第一次尝试发布我的应用程序 我完成了开发者控制台上的步骤 它现在显示 已发布 并带有绿色复选标记 在我点击 激活 和 发布 后 没有错误 然而 我尝试在手机 平板电脑和 Chrome 浏览器上的 Google Play 商店 称为 U
  • 将 PHP 多维数组返回到 Javascript/AJAX

    我的理解是 为了将复杂的 PHP 变量返回给 Javascript 应该通过 AJAX 和 json encode 来完成 有人能给我一个实际的例子 PHP 和 Javascript 代码 吗 假设我们在 PHP 中有一个两维数组 twoD
  • Firebase 字段名称会自动更改吗?

    你好 firebase 开始自动更改我的字段名称 这造成了一个大问题 我怎么解决这个问题 My Class public class TUser private String UserKey private String LicenceKe
  • C# 4 中会有通用属性吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 备份文件关闭Excel VBA

    我希望 Excel 在文件关闭时自动备份工作簿 而不提示用户 我在网上找到了下面的优秀代码 忘记源代码 但备份文件类型正在更改为我无法打开的 BAK 文件 我该如何解决这个问题 两个文件将位于同一文件夹中 备份应具有相同的文件名和 bak
  • 函数模板特化编译错误

    A hh template
  • 检索 ODBC 表并插入 SQL Server CE 数据库

    我有一个到数据库的 ODBC 连接 我需要其中的一个数据表 该表大约有 20 行和几千行数据 我打算将此表插入到我的本地 SQL Server CE 数据库中 以便进一步使用它 两种连接都经过测试并且可以工作 我的尝试是只插入一列以使事情变
  • 创建与 .accdb 访问文件的连接

    我已经上这门课几天了 现在正在网上搜索试图找到解决方案 我在这里尝试做的是使用扩展名连接到 Access 2010 数据库 accdb我已经成功连接到旧数据库的扩展 mdb但不是 accdb 我尝试卸载 Office 并重新安装 x64 版
  • Zend 反向匹配路由返回当前 URL

    我正在使用 Zend Framework 并尝试设置一些自定义路由 这些在调度期间似乎工作正常 但反向匹配根本不起作用 这些是我设置的路线 router gt addRoute category new Zend Controller Ro