Дочерний маршрут сегмента ZF2 не работает

Чего я пытаюсь достичь:

domain.com/user                    = UserController::index
domain.com/user/profile            = UserController::profile
domain.com/user/profile/9          = UserController::profile (with query param id=9)
domain.com/user/profile/9/edit     = UserController::editProfile (with query param id=9)

Итак, у меня есть следующий маршрут:

'user' => array(
    'type'    => 'Segment',
    'options' => array(
        'route'    => '/user',
        'defaults' => array(
            '__NAMESPACE__' => 'YrmUser\Controller',
            'controller'    => 'User',
            'action'        => 'index',
        ),
    ),
    'may_terminate' => true,
    'child_routes' => array(
        'profile' => array(
            'type'    => 'Segment',
            'options' => array(
                'route'    => '/profile[/:id]',
                'defaults' => array(
                    'action' => 'profile',
                ),
                'constraints' => array(
                    'id' => '[0-9]*'
                ),
            ),
            'may_terminate' => true,
            'child_routes' => array(
                'edit' => array(
                    'type'    => 'Segment',
                    'options' => array(
                        'route'    => '/edit',
                        'defaults' => array(
                            'action' => 'editProfile',
                        ),
                    ),
                    'may_terminate' => true
                ),
            )
        ),
    )
)

Это работает, за исключением того факта, что идентификатор параметра запроса никогда не получает значения. Любой, кто может сказать мне, что я делаю неправильно, я догадываюсь, что это что-то глупо простое...

Заранее спасибо,

Юрм


person YRM    schedule 23.01.2014    source источник


Ответы (1)


Работает на меня.

Я var_dumped $this->params ('id') в действии и получил это:

/user
null

/user/profile
null

/user/profile/99
string '99' (length=2)

/user/profile/99/edit
string '99' (length=2)
person akond    schedule 23.01.2014
comment
это действительно была очень глупая ошибка. Я использовал fromQuery, должен был использовать fromRoute - person YRM; 23.01.2014