Дочерние маршруты ZF2 не работают

У меня есть простая конфигурация и контроллер в блоге модуля:

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());
    }
}

Маршрут /blog работает корректно,

но /blog/rss - не работает

Ответ Zend Framework 2 с сообщением об ошибке:

A 404 error occurred
Page not found.
The requested controller was unable to dispatch the request.
Controller:
    Blog\Controller\Blog
No Exception available

Что случилось? Заранее спасибо.


person Serge Melnic    schedule 10.04.2015    source источник


Ответы (2)


У вас нет may_terminate, установленного на true в маршруте `blog/rss', как в его родителях.

person guessimtoolate    schedule 11.04.2015
comment
Спасибо Guessimtoolate, я добавил 'may_terminate'=›true в 'blog/rss', но у меня та же ошибка. Вот пример из руководства по маршрутизации zf2: framework.zend. com/manual/2.3/en/modules/zend.mvc.routing.html, но у меня это не работает. Нужно ли мне изменить некоторые параметры конфигурации для Zend\Mvc\Router или для другого компонента? - person Serge Melnic; 14.04.2015

Проблема в matchedRouteName.

С дочерними маршрутами

защищенный 'matchedRouteName' => строка 'блог/rss' (длина = 8),

без дочерних_маршрутов

защищенный 'matchedRouteName' => строка 'блог' (длина = 4)

Он генерирует ошибку при обработке моего маршрута и перенаправляет на страницу 404, когда я пытаюсь получить доступ к /blog/rss.

person Serge Melnic    schedule 17.04.2015