Zend Framework 2, segment de route nécessaire segment

Je suis en train de faire un itinéraire (ou deux) qui me permettra d'invoquer deux actions différentes avec l'URL ci-dessous les formats.

mydomain.com/profile
mydomain.com/profile/1234/something

Pour la deuxième format, le 1234 doit être un entier obligatoire de la valeur, tandis que something devrait être une chaîne facultative. Le premier format est simple, à l'aide d'un littéral de l'itinéraire. J'ai pensé que je pourrais ajouter un segment enfant de route pour la deuxième format, mais je ne peux pas le faire fonctionner. J'ai essayé de laisser le premier format et seulement le deuxième avec un segment de route, mais je n'ai pas réussi à que ce soit.

Voici ce que j'ai essayé:

'profile' => array(
    'type' => 'Zend\Mvc\Router\Http\Literal',
    'options' => array(
        'route' => '/profile',
        'defaults' => array(
            'controller' => 'User\Controller\User',
            'action' => 'profile'
        )
    ),
    'child_routes' => array(
        'profile_view' => array(
            'type' => 'Zend\Mvc\Router\Http\Segment',
            'options' => array(
                'route' => '/:code[/:username]',
                'constraints' => array(
                    'code' => '[0-9]*',
                    'username' => '[a-zA-Z0-9_-]*'
                ),
                'defaults' => array(
                    'controller' => 'User\Controller\User',
                    'action' => 'view_profile'
                )
            )
        )
    )
)

Pour mydomain.com/profile, j'obtiens l'erreur suivant:

Fatal error: Uncaught exception 'Zend\View\Exception\RuntimeException' with message 'No RouteMatch instance provided'

Pour mydomain.com/1234/something, j'obtiens l'erreur suivante:

Fatal error: Uncaught exception 'Zend\Mvc\Router\Exception\InvalidArgumentException' with message 'Missing parameter "code"'

La manuel indique ce qui suit:

Si un segment est facultatif, il doit être entouré par des crochets. Comme un
exemple, “/:foo [/bar]” pourrait correspondre à un “/” suivi par le texte et l'affecter
à la clé, “foo”; si d'autres caractères “/” sont trouvés, tout
le texte qui suit le dernier sera affecté à la touche “barre”.

N'est-ce pas exactement ce que je fais? Les erreurs ci-dessus restent les mêmes si j'en commentaire les contraintes.

Ce qui me manque ici? Merci à l'avance.

OriginalL'auteur Andy0708 | 2013-02-23