0

私の中に次のルートがありますmodule.config.php

'routes' => array(
    'admin' => array(
        'type' => 'Segment',
        'options' => array(
            'route' => '/admin[/:controller[/:action]][/]',
            'constraints' => array(
                'controller' => '[a-zA-Z][a-zA-Z0-9_-]+',
                'action' => '[a-zA-Z][a-zA-Z0-9_-]+',
            ),
            'defaults' => array(
                '__NAMESPACE__' => 'Admin\Controller',
                'module' => 'Admin',
                'controller' => 'Index',
                'action' => 'index',
            ),
        ),
        'may_terminate' => true,
        'child_routes' => array(
            'wildcard' => array(
                'type' => 'Wildcard',
            )
        ),
        'priority' => 1000
    ),
),

[/]ルートの最後にある理由は次の質問にあります: Zend Framework 2 Segment Route matching 'test' but not 'test/'

このルートはZF1のようにしたいです。私はそれを渡したい$_GET parameters(のように/id/1/test/2/)。

このルートが実際には一致しているが一致/admin/customer/edit//id/20していないという問題/admin/customer/edit/id/20

何か案は?

4

3 に答える 3

1

あなたは正しい軌道に乗っています!admin-route への子ルートのタイプとして「Wildcard」を使用します。

key_value_delimiterparam_delimiterの 2 つのオプションを使用できます。両方のデフォルト値は「/」であり、ルート パラメータの ZF1 デフォルト動作と同じです。

'router' => array(
    'routes' => array(
        'admin' => array(
            'type' => 'Segment',
            'options' => array(                
                'route' => '/admin[/:controller[/:action]]',
                'constraints' => array(
                    'controller' => '[a-zA-Z][a-zA-Z0-9_-]+',
                    'action' => '[a-zA-Z][a-zA-Z0-9_-]+',
                ),
            ),
            'defaults' => array(
                '__NAMESPACE__' => 'Admin\Controller',
                'module' => 'Admin',
                'controller' => 'Index',
                'action' => 'index',
            ),
            'may_terminate' => true,
            'child_routes' => array(
                'wildcard' => array(
                    'type' => 'Wildcard',
                    'options' => array(
                       'key_value_delimiter' => '/',
                       'param_delimiter' => '/'
                    )
                )
            )
        )
    )
)

url view-helper を使用してワイルドカード ルートに対処する場合は、次のように使用できます。

$this->url('admin/wildcard', array('id' => 1234, 'foo' => 'bar'));
于 2015-03-28T19:22:14.480 に答える