gpt4 book ai didi

php - Zend_Controller_Router_Route

转载 作者:行者123 更新时间:2023-12-04 06:36:12 24 4
gpt4 key购买 nike

我正在尝试制作一个可以响应此结构的路由器:
module/controller/action/idmodule/controller/action/page
唯一的区别是“id”或“page”。我正在使用此代码:

$routeAdmin = new Zend_Controller_Router_Route(
'administrador/:controller/:action/:id/:pg',
array(
'module' => 'administrador',
'controller' => 'index',
'action' => 'index',
'id' => 0,
'pg' => 1
),
array(
'id' => '\d+',
'pg' => '\d+'
)
);
$router->addRoute('administrador', $routeAdmin);

问题是在某些情况下我想要:
'http://www.domain.cl/administrador/productos/2' => (module=>administrador, controller=>productos,page=>2)但是路由器“管理员”的结果是 'http://www.domain.cl/administrador/productos/index/0/2' (module=>administrador, controller=>productos,action=>index,id=>0,page=>2)
我对它如何处理这样的情况感到非常困惑。我试图制作两个路由器,其中第一个只有“id”参数和另一个“页面”参数。从 url helper 使用它,如:
  • $this->url(array('module' => 'administrador', 'controller' => 'productos', 'action' => 'index', 'id' => 0), 'administradorId');
  • $this->url(array('module' => 'administrador', 'controller' => 'productos', 'action' => 'index', 'page' => 1), 'administradorPg');

  • 但是当我使用路由器时总是选择添加到路由器的最后一个( $router->addRoute('routerIdentifier', $route); )

    谢谢

    最佳答案

    我有一个类似的问题,我通过定义这样的一条路线来解决这个问题

    $routeAdmin = new Zend_Controller_Router_Route(
    'administrador/:controller/:action/:id/:pg',
    array(
    'module' => 'administrador',
    'controller' => 'index',
    'action' => 'index',
    'id' => 0
    ),
    array(
    'id' => '\d+'
    )
    );
    $router->addRoute('administrador', $routeAdmin);

    在您的 actions然后你需要获取 id并检查它的某个地方 id可能是,例如,如果您在 /administrador/events/view/1那么你可以查看事件表,或者如果你在 /administrador/pages/view/1然后你会寻找一个页面。

    但问题真正开始时 id可以是给定 Controller 和 Action 中的事件或页面。解决此问题的唯一真正方法是显式设置 id 的类型例如你的使用
    /administrador/events/view/index/id/1

    或者
    /administrador/pages/view/index/page/1

    如果你想删除索引部分,那么设置路由
    $routeAdmin = new Zend_Controller_Router_Route(
    // Remove the action from here and explicitly set the controller
    'administrador/pages/:pg',
    array(
    'module' => 'administrador',
    'controller' => 'pages',
    // Then set the default action here
    'action' => 'index',
    'pg' => 0
    ),
    array(
    'pg' => '\d+'
    )
    );
    $router->addRoute('administradorpages', $routeAdmin);

    您的要求基本上会导致大量猜测工作,因此有产生意外结果的风险。

    关于php - Zend_Controller_Router_Route,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4846726/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com