douyan8961 2014-09-22 08:43
浏览 57
已采纳

Zend 2默认路由

I'm having troubles with default routing in ZF2:

 'router' => array(
    'routes' => array(
        'hostbill-api' => array(
            'type'    => 'Literal',
            'options' => array(
                'route'    => '/api/hostbill',
                'constraints' => array(
                    'service' => '[a-zA-Z][a-zA-Z0-9_-]*',
                    'call'    => '[a-zA-Z][a-zA-Z0-9_-]*',
                ),
                'defaults' => array(
                    '__NAMESPACE__' => 'Hostbill\Controller',
                    'controller'    => 'Api',
                    'action'        => 'index',
                ),
            ),
            'may_terminate' => true,
            'child_routes' => array(
                'hostbill-api-service' => array(
                    'type'    => 'Segment',
                    'options' => array(
                        'route'    => '[/:service[/:call]]',
                        'constraints' => array(
                            'service' => '[a-zA-Z][a-zA-Z0-9_-]*',
                            'call'    => '[a-zA-Z][a-zA-Z0-9_-]*',
                        ),
                    ),
                ),
                'hostbill-api-hook' => array(
                    'type'    => 'Segment',
                    'options' => array(
                        'route'    => '/hook[/:action]',
                        'constraints' => array(
                            'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
                        ),
                        'defaults' => array(
                            '__NAMESPACE__' => 'Hostbill\Controller',
                            'controller'    => 'Hook',
                            'action'        => 'index',
                        ),
                    ),
                ),
            ),
        ),
    ),
),

What I want to do, it's when I call URL/api/hostbill/hook/non_existent_action url, the default action it's called.

Actually, if I call an existent action, the routing work, but if I use a non existent hook action, the default isn't called and a 404 is fired.

Any help apreciated

  • 写回答

1条回答 默认 最新

  • drymoeuka282427675 2014-09-23 11:16
    关注

    put this in your controller :

    /**
     * Create an HTTP view model representing a "not found" page
     *
     * @param  HttpResponse $response
     * @return ViewModel
     */
    protected function createHttpNotFoundModel(HttpResponse $response)
    {
        return $this->indexAction();//or whatever that is your default action is
    }
    

    or this one :

    /**
     * Action called if matched action does not exist
     *
     * @return array
     */
    public function notFoundAction()
    {
        return $this->indexAction();//or whatever that is your default action is
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab