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
答
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
}