如何编写 ZF2 路由器脚本以允许默认操作上的参数

2023-12-25

我试图解决 ZF2 中路由语句的一些特性。相册模块示例建议如下:

'router' => array(
    'routes' => array(
        'album' => array(
            'type'    => 'segment',
            'options' => array(
                'route'    => '/album[/:action][/:id]',
                'constraints' => array(
                    'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                    'id'     => '[0-9]+',
                ),
                'defaults' => array(
                    'controller' => 'Album\Controller\Album',
                    'action'     => 'index',
                ),
            ),
        ),
    ),
),

但是,假设我想配置该项目,以便 url/album/index/jazz只会列出爵士乐流派的专辑。

我的第一个挑战是/album/index/jazz第二个参数不是[/:id]。它想要成为[/:genre]。而且,虽然我可以轻松地将路线更改为'route' => '/album[/:action][/:arg1]',以及约束'arg1' => '[a-zA-Z][a-zA-Z0-9_-]*',我真的不想放弃'[0-9]+',对id的约束。我正在寻找一种根据操作定义替代参数模式和约束的方法。

我的第二个挑战在于 ZF2 对默认操作的处理。如果我按如下方式设置路由:

'router' => array(
    'routes' => array(
        'album' => array(
            'type'    => 'segment',
            'options' => array(
                'route'    => '/album[/:action][/:arg1]',
                'constraints' => array(
                    'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                    'arg1'   => '[a-zA-Z][a-zA-Z0-9_-]*',
                ),
                'defaults' => array(
                    'controller' => 'Album\Controller\Album',
                    'action'     => 'index',
                ),
            ),
        ),
    ),
),

然后是网址/album/index/jazz将按照我的意愿将“jazz”参数发送到控制器。但是,我在让 ZF2 使用默认操作构建 url 时遇到问题。遵循以下语法index.phtml在相册模块示例中,我的期望是以下内容:

    <a href="<?php echo $this->url('album',
        array('action'=>'index', 'agr1' => 'jazz'));?>">Jazz</a>

将构建<a href="/album/index/jazz "> Jazz </a>。但是(我假设因为索引是默认操作)索引被删除并且 ZF2 给出<a href="/album/jazz ">Jazz</a>,它不针对真实页面。我尝试过重命名index路由器、控制器和视图中的不同内容;但发现只要是默认动作,$this->url( … )函数将删除我使用的任何名称。解决这个问题可能有很多方法,但我认为最好在路由器配置中解决它,以避免框架的其他未知部分可能以类似的方式处理默认操作。


退后一步并决定您希望 url 方案如何工作,然后弄清楚如何实现它是值得的。

如果我做类似的事情,我可能会这样开始:

/albums[/:category] ​​- 列出所有专辑,可以选择按类别过滤

/albums/:id - 显示有关单个专辑的信息

/albums/:id/edit - 显示编辑专辑信息的表单,并接受 POST

/albums/:id/delete - 仅 POST,删除相册

/albums/new - 显示用于添加相册的表单,并接受 POST。

我建议不要在路由中使用通用名词(因此,避免使用 :action 或 :arg1)。相反,只要明确,一切通常都会顺利进行。

对于第一次复飞,只需明确指定每条路线即可。一旦您了解了这一点,您就可以开始考虑使用子路线将它们分组在一起。

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

如何编写 ZF2 路由器脚本以允许默认操作上的参数 的相关文章

  • 客户端 Javascript 应用程序 - 不带哈希标签的 url 路由

    我正在使用最新版本的 Ember js 开发一个新的仅客户端应用程序 有一个 PHP 页面可以构建脚本 CSS 模板文件等 并将其全部传递到 index php 中 我使用 htaccess 指令 以便所有请求都重写到 index php
  • 如何在 zend Framework 2 中禁用渲染视图?

    我想使用一些 ajax 但我不知道如何使用与 zend Framework 2 中的 setNoRender 相同的函数来禁用渲染视图 如何在 zend Framework 2 中禁用渲染视图 要禁用您的视图 public function
  • Angular 2在实例化子组件之前解析根组件

    当我刷新网络应用程序时 我希望它在实例化任何组件或路由之前请求潜在的登录用户数据 如果找到用户的数据 我想将其注入到我的所有其他子组件所依赖的服务中 场景 假设我有 3 个组件 应用程序 ROOT 主页和关于 如果我将此代码放在 About
  • 用教义 2 DBAL 连接子查询

    我正在重构 Zend 框架2应用程序使用学说 2 5 DBAL 而不是 Zend DB ZF1 我有以下 Zend Db 查询 subSelect db gt select gt from user survey status entrie
  • Codeigniter子域路由

    我正在尝试在 CodeIgniter 框架上运行的网站上设置博客脚本 我想在不对现有网站代码进行任何重大代码更改的情况下执行此操作 我认为创建一个指向另一个控制器的子域将是执行此操作的最干净的方法 我设置新设备所采取的步骤Blog涉及控制器
  • Rails 路线、url 和子域

    我的 ruby 应用程序分为不同的命名空间 例如 免费 free domain com 专业版 pro domain com vip vip domain com 在路由文件中看起来像这样 namespace free do match h
  • 基于角色在同一路径上延迟加载模块

    我正在尝试根据我的角色加载 Angular 模块 当我登录时 我用 Angular Guard 尝试过 但这不起作用 当它失败时 它不会转到下一条路线 const routes Routes path loadChildren gt Aut
  • 如何使用Python中的or-tools解决累积旅行商问题?

    累积旅行商问题 CTSP 的目标是最小化到达客户的时间总和 而不是总旅行时间 这与最小化总旅行时间不同 例如 如果一个人拥有无限的车辆 车辆与位置数量相同 并且目标是最大限度地减少到达位置的总时间 则可以为每个位置发送一辆车 因为这是满足所
  • MVC Ajax.ActionLink 找不到 POST 方法

    我在控制器中声明了一个 POST 方法 AcceptVerbs HttpVerbs Post public ActionResult UpdateComments int id string comments 在我看来 还有一个 Actio
  • React router dom 6 中的受保护路由

    我在反应中创建了简单的用户上下文 用户提供者 export const AuthContext createContext export const AuthProvider children gt const user setUser u
  • 如何在 Laravel 中创建一条包罗万象的路线

    我需要一个 Laravelroutes php将捕获所有流量到特定的条目example com premium section网站 以便我可以提示人们在访问优质内容之前成为会员 您还可以通过在参数上使用正则表达式来捕获 全部 Route g
  • 以编程方式启用 Internet 连接共享

    我可以手动执行此操作 方法是右键单击网络连接 打开 共享 选项卡 单击 允许其他网络用户通过此计算机的 Internet 连接进行连接 复选框 然后选择 家庭网络连接 在研究这个问题时 我发现了多组 COM 接口 1 Internet 连接
  • ServiceStack支持反向路由吗?

    遵循 REST 建议 API 是可发现的并且应该相互链接 ServiceStack 是否支持任何类型的反向路由 我正在寻找类似的东西Url RouteLink在 ASP MVC 中 这里陈述了一些混合概念 在尝试遵守 REST 的过程中 您
  • 了解路由表条目

    我想问一个关于Linux中route命令的问题 我已在 Linux 终端中输入以下命令 gt route 并得到输出 Destination Gateway Genmask Flags Metric Ref Use Iface 192 16
  • 带有日期的铁路路线

    因此 我有一个每周日历视图 并且设置了一条路线来接受 year month day 作为开始日期 match events year month day gt events index constraints gt year gt d 4
  • ZF2 路线参数带斜杠

    是否可以使用包含正斜杠的参数来组装路由 Config someroute gt array type gt Zend Mvc Router Http Segment options gt array route gt someroute p
  • 在 MVC 4 中使用路由更改 URL 参数

    我的几个 API 函数允许使用名为 attribute 和 attributeDelimiter 单数 的参数 这意味着预期的 URL 格式为 SomeController SomeAction aaa bbb attribute ccc
  • 导航嵌套组件时创建面包屑 (Angular 2)

    我正在为此苦苦挣扎 这个想法是有一个组件 当浏览子视图时更新面包屑 例如
  • 主页的 RefineryCMS 路线不起作用

    刚刚开始使用RefineryCMS 抱歉新手问题 它在本地运行良好 并幸运地部署在 Heroku Cedar 堆栈上 创建了一个名为 主页 的页面 pages home 响应良好 路线 rb root to gt pages home 并在
  • Asp.net MVC 路由 - 防止通过约束路由到 XML 文件

    我正在尝试找到一种方法来阻止用户访问特定的 xml 文件 我尝试过做 routes MapRoute SiteMap SiteMap siteMap xml new new isLocal new LocalHostRouteConstra

随机推荐

  • 在树视图中添加图像

    TreeNode desktop new TreeNode desktop Text Desktop desktop Tag Desktop Mycomputer ImageIndex 1 Mycomputer SelectedImageI
  • 为什么我的内核日志没有显示最新的输出?

    我正在 Ubuntu 17 04 中编写一个简单的内核模块 它接受一个字符串并将其打印在内核日志中 include
  • 如何复用Activity?不要每次都创建活动

    本主题是此主题的继续 安卓 如何在不创建新活动的情况下开始活动 https stackoverflow com questions 7674477 我读到 当单击 后退 按钮时 活动会被破坏 当深入堆栈然后回调活动时 它们不会被破坏 使用a
  • 我真的需要执行 mysql_close()

    我真的需要执行 mysql close 吗 为什么或者为什么不 即使我不执行 mysql close 是否有触发器在 mysql connect 之后关闭链接 根据文档 http php net manual en function mys
  • 为什么 CMake 语法到处都有多余的括号?

    CMake s if像这样 if condition else if else endif With else if the 测试单独的条件 Why else 不仅仅是else Why endif 并不是endif Cmake的功能如下 f
  • 监控 Spark 执行和存储内存利用率

    我知道有多种方法可以监视 Spark 应用程序的存储内存利用率 但有人知道监视执行内存利用率的方法吗 我也在寻找一种监视 用户内存 的方法 即不用于执行也不用于存储的内存 查看 Spark 的内存管理文档https spark apache
  • jQuery 断言支持/防御性编程?

    jQuery 中是否有内置支持进行基本断言检查 主要是 返回元素的预期数量 之类的内容 例如 我可能有一个像这样的简单声明 btnSignup click function return validateForm 现在有很多理由 btnSi
  • 使用 Selenium Scraper (Python) 时消除 % 符号

    下面是一个 Selenium 网络抓取工具 它循环访问该网站页面的不同选项卡 选择 导出数据 按钮 下载数据 添加yearid列 然后将数据加载到MySQL表中 import sys import pandas as pd import o
  • AngularJS 错误 - [$compile:multidir] 多个指令错误

    我使用这些包 来自 Angular ui 包的 Angularjs 模态 http angular ui github io bootstrap modal http angular ui github io bootstrap modal
  • 数据库设计主键、ID 与字符串

    我目前正在计划开发一个音乐流应用程序 我想知道什么作为服务器上表中的主键会更好 ID int 或唯一字符串 方法一 歌曲表 SongID int 标题 string 艺术家 string 长度 int 专辑 string 流派表Genre
  • 仅允许输入数值 Datagridview 特定列

    有什么方法可以自定义 datagridview 列以仅接受数值 此外 如果用户按数字以外的任何其他字符 则不得在当前单元格上键入任何内容 有什么方法可以解决此问题 private void gvAppSummary EditingContr
  • 在 TFS2015 update2 vNext 构建配置中发送请求时发生错误

    配置 TFS vNext 构建代理时出现错误 连接到服务器时出错 发送请求时发生错误 的请求 我在事件日志或其他任何地方找不到任何其他错误消息 请帮忙 更新1 SSL https tfs 不起作用 但是简单的 http 起作用了 更新 2
  • 一个巨大的 CSS - 还是许多小的 CSS?

    希望是简单的问题 我们有一个超过 3000 行的样式表 因此在渲染页面时存在明显的延迟 问题是 是使用一个覆盖所有内容的大型样式表更好 还是使用许多覆盖页面不同部分的小样式表更好 例如 一个用于布局 一个用于下拉菜单 一个用于颜色等 这只是
  • OCaml 语言的 IDE

    除了 Camelia 之外 还有其他值得信赖的 OCaml IDE 吗 如果存在的话 我更喜欢基于 Eclipse 的 IDE 编辑 十年后 2022 VS Code OCaml 平台 https marketplace visualstu
  • 通过 CPU/GPU 的占位符获取不同的值

    当我运行下面的代码时 我认为我得到了错误的结果 OVER GPU import tensorflow as tf sess tf Session a tf placeholder tf float32 b tf placeholder tf
  • 如何在 CakePHP 中强制刷新图像和 css 文件?

    我有以下问题 我正在 CakePHP 中编码 而且我是新手 我经常需要更改网站上的一些图像或 css 文件 在网站上我总是看到旧的内容 除非我手动按键盘上的 F5 我必须在每个使用该网站的工作场所执行此操作 这很令人恼火 尤其是因为我不知道
  • 更改子进程中的环境变量 - bash

    嗨我有以下示例 a sh 脚本设置了我可以在 b sh 子 脚本中看到的环境变量 但是如果我更改它 我仍然在 a sh 中保留旧值 a sh bin bash export A 1 b sh echo parent A b sh bin b
  • 存储WPF图像资源

    对于需要 10 20 个小图标和图像用于说明目的的 WPF 应用程序 将它们作为嵌入式资源存储在程序集中是正确的方法吗 如果是这样 如何在 XAML 中指定图像控件应从嵌入资源加载图像 如果您将在多个地方使用该图像 那么值得将图像数据仅加载
  • 比较 Highcharts 组合图表中工具提示内的两个数据点

    我有一个共享单个 Y 轴的组合条线图 条形图和折线图的数据点始终共享相同的 Y 值 我希望能够计算工具提示中两个 X 值之间的差异 这是我正在使用的图表 组合图 http jsfiddle net 7RQU4 让它工作 诀窍在于工具提示的共
  • 如何编写 ZF2 路由器脚本以允许默认操作上的参数

    我试图解决 ZF2 中路由语句的一些特性 相册模块示例建议如下 router gt array routes gt array album gt array type gt segment options gt array route gt