Zend Framework - 长路由(路由器)

时间:2010-02-21 16:45:10

标签: zend-framework routing

我已经在考虑开始使用简单的GET字符串了。

或者我不太擅长配置路线? :)

在.htaccess

中通过正则表达式配置路由
foreach($links as $a) 
{

$Router->addRoute($a['link'],
                  new Zend_Controller_Router_Route(
                      $a['link'] . '/:page/:ad_id/:photo/:price_from/:price_to/:regions/:rajoni/:towns/:pagasti/:gadi_from/:gadi_to/:augums_from/:augums_to',
                      array
                      ("page" => 1,
        "ad_id" => 0,
        "photo" => 0,
        "price_from" => 0,
        "price_to" => 0,
        "regions" => 'def',
        "rajoni" => 'def',
        "towns" => 'def',
        "pagasti" => 'def',
        "gadi_from" => 'def',
        "gadi_to" => 'def',
        "augums_from" => 'def',
        "augums_to" => 'def',
        "department" => $a['department'],
        "category" => '',
        "link" => $a['link'],
        "controller" => "ads",
                       "action"     => "view",
                      ))); 
}

请帮我找到使用Zend Framework路由的正确方法

编辑后:

顺便说一句,是否可以循环通过类别来绑定路由到它们? 那么网址可能是人类可读的吗?

或者更好地坚持.htaccess文件配置?但我仍然没有想到,如何在不添加类别的数字的情况下制作人类可读的网址。

  RewriteRule ^.*-d([0-9]+)/.*-c([0-9]+)/page-([0-9]+)/?$ index.php?DepartmentId=$1&CategoryId=$2&Page=$3 [L]
  RewriteRule ^.*-d([0-9]+)/.*-c([0-9]+)/?$ index.php?DepartmentId=$1&CategoryId=$2 [L]

我想通过的唯一方法是将类别的实际名称作为值传递,在服务器端将其与类别名称数组进行比较。

还是有更好的方法?

1 个答案:

答案 0 :(得分:0)

您是否使用此路线显示搜索结果?如果是这种情况,我强烈建议避免这种长度的路由 - 它们更难维护(尝试添加另一个参数) - 正常使用GET查询字符串。

结构类似于/ ads / view /:page /?ad_id = xxx& ...