2

AbstractRestfulControllerZend Framework 2では、リクエスト タイプに基づいて、拡張するコントローラで指定されたアクションにいくつかの動的 URL をルーティングしようとしています。問題は、 がこれらのルートをデフォルト アクションなどにオーバーライドし続けるAbstractRestfulControllerことです。get()getList()

私のルートは次のとおりです。

GET /my-endpoint/{other_id} - allAction()
POST /my-endpoint/{other_id} - createAction()
GET /my-endpoint/{other_id}/{id} - getAction()
PUT /my-endpoint/{other_id}/{id} - updateAction()
DELETE /my-endpoint/{other_id}/{id} - deleteAction()

私のルーター構成は次のとおりです。

'my-endpoint' => [
    'type' => 'segment',
    'options' => [
        'route' => 'my-endpoint/:other_id',
        'constraints' => [
            'other_id' => '[0-9]+',
        ],
        'defaults' => [
            'controller' => 'my-endpoint',
        ],
    ],
    'may_terminate' => true,
    'child_routes' => [
        'get' => [
            'type' => 'method',
            'options' => [
                'verb' => 'get',
                'defaults' => [
                    'action' => 'all',
                ],
            ],
        ],
        'post' => [
            'type' => 'method',
            'options' => [
                'verb' => 'post',
                'defaults' => [
                    'action' => 'create',
                ],
            ],
        ],
        'single' => [
            'type' => 'segment',
            'options' => [
                'route' => '[/:id]',
                'constraints' => [
                    'id' => '[0-9]+',
                ],
            ],
            'may_terminate' => true,
            'child_routes' => [
                'get' => [
                    'type' => 'method',
                    'options' => [
                        'verb' => 'get',
                        'defaults' => [
                            'action' => 'get',
                        ],
                    ],
                ],
                'update' => [
                    'type' => 'method',
                    'options' => [
                        'verb' => 'put',
                        'defaults' => [
                            'action' => 'update',
                        ],
                    ],
                ],
                'delete' => [
                    'type' => 'method',
                    'options' => [
                        'verb' => 'delete',
                        'defaults' => [
                            'action' => 'delete',
                        ],
                    ],
                ],
            ],
        ],
    ],
],

そして、私のコントローラーには次のアクションがあります。

public function allAction() {
    die('allAction');
}

public function createAction() {
    die('createAction');
}

public function getAction() {
    die('getAction');
}

public function updateAction() {
    die('updateAction');
}

public function deleteAction() {
    die('deleteAction');
}

AbstractRestfulController他のリクエストタイプがこのコントローラーに許可されないように、またはデフォルトルートをオーバーライドするように、具体的にこのようにルーティングするにはどうすればよいですか?

また、この Zend コントローラーを拡張するより一般的なコントローラーを実際に拡張しているため、このコントローラーを拡張し続けたいと思います。

4

1 に答える 1

0

設定してみてください:'may_terminate' => false

現在、ルートは'my-endpoint'or 'single'and と一致します。これらの一致に対してアクションが設定されていないためです。代わりに、リクエストから http メソッドを取得し、メソッド内のAbstractRestfulController onDispatch対応するコントローラー メソッドにマップします。

于 2015-10-15T11:20:58.107 に答える