0

就编写 Zend 路由器而言,我是新手。我想路由表单的所有请求

/:用户名到控制器=>用户和操作=>配置文件。问题是我希望能够过滤 :username 将被路由。即我要过滤的用户名将被路由。

我要应用的最基本和最重要的过滤器是,如果 :username 匹配一些现有的控制器名称,它不应该被路由到 /user/profile。

对此的任何帮助将不胜感激。谢谢。

4

1 回答 1

1

这里有一些提示可以让你到达你想去的地方:

  1. 路由聚合到堆栈上,因此它们是 LIFO(后进先出)。这意味着您的最高优先级路由应最后定义。对于这种特殊情况,您希望更早地列出您的 /:username 路由,以便它具有较低的优先级。这将允许您的其他现有路线首先被路由。
  2. 您提到要“过滤”哪个 :username 将被路由。你有用户名的静态列表吗?如果是这样,您可以使用正则表达式路由并执行 (username1|username2|...)。如果您通过数据库查找用户名,则需要构建一个自定义路由类来查询您的数据库。
  3. 或者,您可以简单地使用基于模式的路由,然后在前端控制器插件中进行过滤。

注意:如果您使用选项 #3,以下内容应该可以帮助您入门:

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

您将根据路线名称采取行动。如果不是定义 /:username 路由的路由名称,则忽略。如果匹配,请查找用户名并过滤。

于 2012-04-06T06:26:09.540 回答