遗留代码上的Zend路由问题

时间:2014-11-13 21:48:40

标签: php zend-framework zend-framework2 zend-form

我在继承的遗留Zend应用程序上遇到问题 - 想知道是否有人可以帮我调试?

到目前为止,我已经检查过了:

  • application.config.php - 正确加载模块:

    'modules' => array(
    'App',
    'Finding',
    'Listing',
    

等等

  • module.config.php并且该路径似乎没有路径,例如:

    'listing' => array(
            'type'    => 'segment',
            'options' => array(
                'route'    => '/admin/property/listing[/:action[/:id]][/:component/:optionTitle/:optionValue]',
                'constraints' => array(
                                                                            'action'                 => '[a-z0-9_-]*',
                                                                            'id'                     => '[0-9]+',
                                                                            'component'              => '[a-z0-9_-]*',
                                                                            'optionTitle'    => '[a-z0-9_-]*',
                                                                            'optionValue'   => '[a-z0-9_-]*'
                                                                    ),
    
                'defaults' => array(
                    'controller' => 'Admin\Controller\Listing',
                    'action'     => 'list',
                ),
            ),
        ),
    

我收到的实际错误消息是:

     The requested URL could not be matched by routing. No Exception available

我正在做的是在用户登录区域,单击加载确定的列表类别,然后提交POST表单,该表单更新与该ID关联的数据库中的特定属性。

然而,在提交时,如果不是路线问题,我会收到上述消息,还有其他方法可以跟踪此情况吗?

修改

注释看起来并不适合调试,所以我会按照要求在这里添加它们:

发布数据阵列:

   [listingId] => 121 [colvalues] => Array ( [0] => 11 [1] => 22 [2] => 33 [3] => 44 [4] => 55 [5] => 66 [6] => 77 [7] => 88 )

个人网址结构

    admin/property/listing/view/11111 

它发布回到同一个网址 - 所以:

    admin/property/listing/view

1 个答案:

答案 0 :(得分:0)

该路线有一个可选的id参数

/admin/property/listing[/:action[/:id]]

您没有发布id参数,而是listingId

我的猜测是:

  1. viewAction中没有Admin\Controller\Listing

  2. 有控制器逻辑专门检查id参数,如果没有提供,则返回带有404状态代码的响应。

  3. 我认为这些原因的原因是因为即使您的路由(id)中缺少admin/property/listing/view参数,路由器仍应匹配控制器操作(因为id可选参数)。