У меня есть простой конфиг и контроллер в модуле Блог:
module.config.php:
return array(
'controllers'=>array(
'invokables'=>array(
'Blog\Controller\Blog'=>'Blog\Controller\BlogController',
),
),
'router'=>array(
'routes'=>array(
'blog'=>array(
'type'=>'literal',
'options'=>array(
'route'=>'/blog',
'defaults'=>array(
'controller'=>'Blog\Controller\Blog',
'action'=>'index',
),
),
'may_terminate'=>true,
'child_routes'=>array(
'rss'=>array(
'type'=>'literal',
'options' => array(
'route'=>'/rss',
'defaults'=>array(
'action'=>'rss',
),
),
),
)
)
)
),
);
BlogController.php:
namespace Blog\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
class BlogController extends AbstractActionController
{
public function indexAction(){
return new ViewModel(array());
}
public function rssAction(){
return new ViewModel(array());
}
}
маршрут / блог работает правильно,
но / Блог / Новости — не работает
Ответ Zend Framework 2 с сообщением об ошибке:
Произошла ошибка 404 Страница не найдена. Запрошенный контроллер не смог отправить запрос. контроллер: Блог \ Controller \ Блог Исключение не доступно
В чем дело?
Заранее спасибо.
У вас нет may_terminate
установлен в true
в маршруте `blog / rss ‘, как вы делаете в его родителе.
Проблема в matchedRouteName.
С child_routes
protected ‘matchedRouteName’ => строка ‘blog / rss’ (length = 8),
без child_routes
protected ‘matchedRouteName’ => строка ‘blog’ (длина = 4)
Он генерирует ошибку в моем тракте обработки и перенаправляет на страницу 404 при попытке доступа / blog / rss.