douqian1517 2016-11-23 09:35
浏览 26

zend框架2路由转向不正确的操作

I am trying to hit the datatable action with the sID and cID params.

/CustomerManager/datatable/123/100

When the above url is hit it goes to the refreshdata see below image. enter image description here

Working fine when the url is

/CustomerManager/datatable

Can anyone see problem with the config?

'CustomerManager' => array(
            'type' => 'Segment',
            'options' => array(
                'route'    => '/CustomerManager[/:action]',
                'constraints' => array(
                    'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                ),
                'defaults' => array(
                    'controller' => 'CustomerManager\Controller\CustomerManager',
                    'action'     => 'index',
                ),
            ),
            'may_terminate' => true,
            'child_routes' => array(
                'datatable' => array(
                    'type' => 'segment',
                    'options' => array(
                        'route' => '/[:sID][/:cID]',
                        'constraints' => array(
                            'cono' => '[a-zA-Z0-9_-]+',
                            'cust' => '[a-zA-Z0-9_-]+',
                        ),
                        'defaults' => array(
                            'action' => 'datatable',
                        ),
                    ),
                ),
                'refreshdata' => array(
                    'type' => 'segment',
                    'options' => array(
                        'route'    => '/[:showDel][/:sID][/:cID]',
                        'defaults' => array(
                            'action' => 'refreshdata'
                        ),
                        'constraints' => array(
                            'showDel' => '[a-zA-Z0-9_-]+',
                            'sID' => '[a-zA-Z0-9_-]+',
                            'cID' => '[a-zA-Z0-9_-]+',
                        )
                    )
                ),
            )
  • 写回答

2条回答 默认 最新

  • douliexu5623 2016-11-23 09:56
    关注

    it seems "refreshdata" overwrite "datatable" because you expect a url with at last 3 parameter which all can be letters or numbers

    and in request you call a url with two number type parameters which matches with "refreshdata"

    also I think

    'cono' => '[a-zA-Z0-9_-]+',
    'cust' => '[a-zA-Z0-9_-]+',
    

    in this line "cono" and "cust" must change to "sID" and "cID"

    评论

报告相同问题?

悬赏问题

  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题