У меня проблемы с маршрутизацией по умолчанию в 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',
),
),
),
),
),
),
),
Что я хочу сделать, это когда я звоню URL / API / hostbill / крюк / non_existent_action URL, дефолт действие это называется.
На самом деле, если я вызываю существующее действие, маршрутизация работает, но если я использую несуществующее ловушечное действие, то по умолчанию не вызывается и запускается 404.
Любая помощь приветствуется
поместите это в свой контроллер:
/**
* 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
}
или этот:
/**
* Action called if matched action does not exist
*
* @return array
*/
public function notFoundAction()
{
return $this->indexAction();//or whatever that is your default action is
}
Других решений пока нет …