Zend Framework - 可选的路由器标签

时间:2010-08-17 21:42:46

标签: php zend-framework

我很可能完全以错误的方式解决这个问题。我完全不熟悉这个框架..

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

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

我想在浏览产品时使用URL结构,如下所示:

/视图/类别/型号/版本

这会产生一个特定的产品/版本 - 但我也想回溯(浏览所有版本,所有模型等)。我无法弄清楚如何实现这一点..我的路线设置如下:

bootstrap.php中

  $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 Framework文档的内容让我发疯。

谢谢

1 个答案:

答案 0 :(得分:4)

我不是一个真正的ZendFramework人,但很明显缺少的参数导致了这个问题。路径按相反顺序匹配。当传递3个参数并且期望为4时,它是否可以将NULL值传递给视图?

如果您尝试过以下内容怎么办?

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

如果未提供默认值,则应传递默认值。