在现有的Zend Framework网站上,几乎没有控制器,没有模块,我需要在默认路由中添加一些前缀.

例如,我目前有:

/products

/products/id/1

/training

/commonpage

我想添加一个产品线级别,而不会在x模块中复制我的控制器(我将使用_getParam请求我的控制器内的正确的产品线).

所以我的新路径将是:

/line1/products

/line1/products/id/1

/line2/training

/commonpage

我到目前为止所尝试的是这条路线(位于我的Bootstrap文件中):

protected function _initRoutes()

{

$router = Zend_Controller_Front::getInstance()->getRouter();

$router->addRoute('productLineRoute', new Zend_Controller_Router_Route(

':line/:controller/:action',

array('module' => 'default'),

array('line' => '(' . implode('|', Zend_Registry::getInstance()->constants->lines) . ')')

));

}

但没有任何成功(它给了我一个404).

在这些条件下,如何构建与所有uri匹配的单个路由:

> uri的前缀匹配我的产品线数组中的一个值

>该路由仅在允许以“产品线路”方式访问控制器的情况下才有效 – 通过包含我的控制器名称的数组,例如

UPDATE

好的,我设法真正接近我正在试图用这个代码:

protected function _initConstants()

{

$registry = Zend_Registry::getInstance();

$registry->constants = new Zend_Config( $this->getApplication()->getOption('constants') );

$uri = ltrim($_SERVER['REQUEST_URI'], '/');

$product_line = substr($uri, 0, strpos($uri, '/'));

if(!empty($product_line) && in_array($product_line, Zend_Registry::getInstance()->constants->lines->toArray()) &&

$product_line != Zend_Registry::getInstance()->constants->lines->get(0)) {

$registry->product_line = $product_line;

} elseif(!isset($registry->gamme)) {

$registry->product_line = Zend_Registry::getInstance()->constants->lines->get(0);

}

}

protected function _initRoutes()

{

$router = Zend_Controller_Front::getInstance()->getRouter();

$registry = Zend_Registry::getInstance();

$router->addRoute('productLineRoute', new Zend_Controller_Router_Route(

':line/:controller/:action/*',

array(

'module' => 'default', 'action' => 'index',

'line' => (isset($registry->product_line)) ? $registry->product_line : Zend_Registry::getInstance()->constants->lines->get(0)

),

array(

'line' => '(' . implode('|', Zend_Registry::getInstance()->constants->lines->toArray()) . ')',

'controller' => '(' . implode('|', array('products', 'training')) . ')'

)

));

}

有了我可以访问/ line1 / products但不是/ line1 / commonpage,这是我想要的 – 所以控制器约束是非常好的.您可以看到我在Zend注册表中添加产品线名称,所以当我在模板中使用URL View Helper时,它被保存(这样我就不必编辑我的所有模板来添加我的帮助器中的product line参数调用).

我现在的问题是关于这个帮助:似乎我的控制器约束只是被忽略.当我在我的模板中这样做:

My link

我结束了这个:

My link

所以添加了产品线,尽管事实上这不允许我的路由器的控制器约束.

php前缀路由器的,php – 使用前缀和Zend_Controller_Router_Route相关推荐

  1. TP5.1查询用Db('不含表前缀')/Db::name('不含表前缀')/Db::table('含表前缀')返回数组;model()返回对象

    TP5.1查询用Db(('不含表前缀')/Db::name('不含表前缀')/Db::table('含表前缀')返回数组:model()返回对象 all():可直接传数组查询 select():传数组 ...

  2. 前缀和、二维前缀和与差分的小总结

    在了解二维前缀和之前,我们首先需要了解一下什么是前缀和. 如果我给你一串长度为n的数列a1,a2,a3......an,再给出m个询问,每次询问给出L,R两个数,要求给出区间[L,R]里的数的和,你会 ...

  3. 网站服务器ip 前缀,如何查看ipv6地址前缀

    如何查看 站点本地单播地址包含一个FEC0::/10 前缀.子网ID 以及接口ID.链路本地单播地址使用FE80::/ 10 前缀和一个接口ID. 介绍一些常用的地址前缀 ::/128  即0:0:0 ...

  4. OpenCV 笔记(04)— OpenCV2 升级到 OpenCV3/CV4 的改动(去掉 CV_前缀、使用新的前缀替换、使用新的命名空间宏)

    1. 由于宏名称的变更照成的"未声明的标识符"系列问题 有时候,遇到此类问题加入一句 #include <cv.h> 便可以让 OpenCV3 或者 OpenCV4 也 ...

  5. LeetCode 208. 实现 Trie (前缀树) —— 提供一套前缀树模板

    208. 实现 Trie (前缀树) Ideas 前缀树嘛,直接套模板咯,把之前写的拿过来抄一遍. 提供一下我的模板. Code Python class TrieNode:def __init__( ...

  6. trie树查找前缀串_Trie数据结构(前缀树)

    trie树查找前缀串 by Julia Geist Julia·盖斯特(Julia Geist) A Trie, (also known as a prefix tree) is a special ...

  7. 【51nod - 1098】 最小方差(基础数学,公式化简,前缀和,积的前缀和)

    题干: 若x1,x2,x3--xn的平均数为k. 则方差s^2 = 1/n * [(x1-k)^2+(x2-k)^2+--.+(xn-k)^2] . 方差即偏离平方的均值,称为标准差或均方差,方差描述 ...

  8. 【51nod - 前缀异或】 对前缀和的理解

    题干: 前缀异或  基准时间限制:2 秒 空间限制:131072 KB 分值: 5 输入一个长度为n(1 <= n <= 100000)数组a[1], a[2], ..., a[n]. 输 ...

  9. php+redis+设置前缀,spring使用Redis自定义前缀后缀名(去掉SimpleKey []+自定义)

    标签: spring中自动加上 SimpleKey [] 解决方案 一.自定义后缀名 1.定义类实现KeyGenerator接口 MyKeyGenerator package com.wbg.spri ...

最新文章

  1. 浅谈 Math.BigMul 方法
  2. java高级-多线程编程
  3. 基于事件的异步模式——BackgroundWorker
  4. 对select的结果进行count统计
  5. 目标检测系列(七)——CornerNet:detecting objects as paired keypoints
  6. Dijkstrala算法
  7. sqlserver数据库安装后服务配置
  8. Unity3D中的线性插值Lerp()函数解析
  9. Pytorch深度学习实战笔记
  10. 校园信息发布平台网站源码
  11. ES索引重建reindex详解
  12. 轻轻松松背单词软件测试,Englishfield词汇记忆与测试
  13. matlab 2014b 图像,使用Matlab 2014b的锯齿状轮廓
  14. 聊聊iClient for Leaflet坐标转换问题
  15. 物联网应用网站——设计报告
  16. [AssistantTool]_7_添加生成测试图的功能
  17. URL Extractor 4 for Mac(URL资源地址抓取器)特别版
  18. iphone手机safari浏览器访问网站滚动条不显示问题解决办法
  19. ORB-SLAM3 单目惯导ros-system-track
  20. 《生物信息学:导论与方法》--生物信息数据库及软件资源--听课笔记(二十二)

热门文章

  1. Flume-NG + HDFS + HIVE 日志收集分析 | EyeLu技术Blog
  2. rsync软件配置和使用教程
  3. RAC crs_stat unknown资源状态处理
  4. ASP.NET 常见参考项目的 UI、BLL 、Model 、 DAL 分析
  5. 逻辑人渴望控制那些让他们感兴趣的东西
  6. 我们家的HTML5捣蛋王开始行动了
  7. 2009-08-02 XEIM 2.8 beta 迅速发布
  8. IBM发布32纳米芯片技术 明年下半年量产
  9. 美发新造型 名家创意示范集锦(图)
  10. 我希望我一开始就知道的5个Python功能