代码之家  ›  专栏  ›  技术社区  ›  Mahdi.Montgomery

Zend框架-可选路由器标签

  •  3
  • Mahdi.Montgomery  · 技术社区  · 14 年前

    很可能我是完全错误的。我对框架完全陌生……

    我正在开发的站点有两个“部分”,它们主要是独立的。信息/社区的一半,商业的一半。我正在使用以下目录结构:

    --application
    ----default
    ------controllers
    ------layouts
    ------models
    ------views
    ----store
    ------controllers
    ------layouts
    ------models
    ------views
    --config
    --library
    --public
    

    我希望在浏览产品时有一个URL结构,如下所示:

    /视图/类别/模型/修订

    这将调出一个特定的产品/修订版-但我也希望后退(浏览所有修订版、所有模型等)。我不知道怎么做到这一点。我的路线设置如下:

    引导程序

      $front = Zend_Controller_Front::getInstance();
      $router = $front->getRouter();
      $route = new Zend_Controller_Router_Route(
          'view/:cid/:sku/:rev',
          array('module' => 'store', 'controller' => 'index', 'action' => 'index')
      );
      $router->addRoute('view', $route);
    

    这对于拉取特定的产品很好,但在省略3个标记的参数时抛出异常(它恢复为默认模块,并抱怨控制器“视图”不存在)。是否可以添加可选标签,以便继续使用存储模块下的视图控制器获取1-3个参数?我错过要点了吗?

    我在框架文档中没有找到任何内容,但是如果我只是找不到页面,我不会感到惊讶。Zend框架文档有点让我抓狂。

    谢谢您

    1 回复  |  直到 13 年前
        1
  •  4
  •   Chuck Burgess    14 年前

    我不是一个真正的ZendFramework工作人员,但很明显,丢失的参数导致了这个问题。路由按相反的顺序匹配。当传递了3个参数并且期望值为4时,它是否会向视图传递一个空值?

    如果你尝试了类似的方法:

    $route = new Zend_Controller_Router_Route(
          'view/:cid/:sku/:rev',
          array('module' => 'store', 'controller' => 'index', 'action' => 'index', 'cid' => 0, 'sku' => 0, 'rev' => 0)
      );
    

    如果没有提供默认值,它应该传递这些值。