Tôi đang cố gắng để viết một con đường em cho một dịch vụ Apigility, và các tuyến đường tất cả mọi thứ tốt đẹp cho đến khi nó đến thời gian để làm cho liên kết _self
..tuyến Apigility con không nhận cha mẹ thông số
GET http://host/api/service/parameter/gui/page
{
"status": 500,
"title": "Unexpected error",
"describedBy": "http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html",
"detail": "Missing parameter \"parameter\"",
"details": {
"code": 0,
"message": "Missing parameter \"parameter\"",
"trace": "#0 /vagrant/vendor/zendframework/zendframework/library/Zend/Mvc/Router/Http/Segment.php(313): Zend\\Mvc\\Router\\Http\\Segment->buildPath(Array, Array, true, true, Array)\n#1 /vagrant/vendor/zendframework/zendframework/library/Zend/Mvc/Router/Http/Segment.php(409): Zend\\Mvc\\Router\\Http\\Segment->buildPath(Array, Array, false, true, Array)\n#2 /vagrant/vendor/zendframework/zendframework/library/Zend/Mvc/Router/Http/Part.php(197): Zend\\Mvc\\Router\\Http\\Segment->assemble(Array, Array)\n#3 /vagrant/vendor/zendframework/zendframework/library/Zend/Mvc/Router/Http/TreeRouteStack.php(351): Zend\\Mvc\\Router\\Http\\Part->assemble(Array, Array)\n#4 /vagrant/vendor/zendframework/zendframework/library/Zend/View/Helper/Url.php(100): Zend\\Mvc\\Router\\Http\\TreeRouteStack->assemble(Array, Array)\n#5 [internal function]: Zend\\View\\Helper\\Url->__invoke('parent.rest.s...', Array, Array, true)\n#6 /vagrant/vendor/zfcampus/zf-hal/src/Plugin/Hal.php(610): call_user_func(Object(Zend\\View\\Helper\\Url), 'parent.rest.s...', Array, Array, true)\n#7 /vagrant/vendor/zfcampus/zf-hal/src/Plugin/Hal.php(634): ZF\\Hal\\Plugin\\Hal->fromLink(Object(ZF\\Hal\\Link\\Link))\n#8 /vagrant/vendor/zfcampus/zf-hal/src/Plugin/Hal.php(667): ZF\\Hal\\Plugin\\Hal->fromLinkCollection(Object(ZF\\Hal\\Link\\LinkCollection))\n#9 /vagrant/vendor/zfcampus/zf-hal/src/Plugin/Hal.php(525): ZF\\Hal\\Plugin\\Hal->fromResource(Object(ZF\\Hal\\Entity))\n#10 /vagrant/vendor/zfcampus/zf-hal/src/View/HalJsonRenderer.php(117): ZF\\Hal\\Plugin\\Hal->renderEntity(Object(ZF\\Hal\\Entity))\n#11 /vagrant/vendor/zendframework/zendframework/library/Zend/View/View.php(205): ZF\\Hal\\View\\HalJsonRenderer->render(Object(ZF\\Hal\\View\\HalJsonModel))\n#12 /vagrant/vendor/zendframework/zendframework/library/Zend/Mvc/View/Http/DefaultRenderingStrategy.php(102): Zend\\View\\View->render(Object(ZF\\Hal\\View\\HalJsonModel))\n#13 [internal function]: Zend\\Mvc\\View\\Http\\DefaultRenderingStrategy->render(Object(Zend\\Mvc\\MvcEvent))\n#14 /vagrant/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(468): call_user_func(Array, Object(Zend\\Mvc\\MvcEvent))\n#15 /vagrant/vendor/zendframework/zendframework/library/Zend/EventManager/EventManager.php(207): Zend\\EventManager\\EventManager->triggerListeners('render', Object(Zend\\Mvc\\MvcEvent), Array)\n#16 /vagrant/vendor/zendframework/zendframework/library/Zend/Mvc/Application.php(352): Zend\\EventManager\\EventManager->trigger('render', Object(Zend\\Mvc\\MvcEvent))\n#17 /vagrant/vendor/zendframework/zendframework/library/Zend/Mvc/Application.php(327): Zend\\Mvc\\Application->completeRequest(Object(Zend\\Mvc\\MvcEvent))\n#18 /vagrant/public/index.php(38): Zend\\Mvc\\Application->run()\n#19 {main}"
}
}
Nhìn vào ZF2 MVC tài liệu, tôi loại nhận ra tôi cần phải thiết lập một mục nhập metadata_map cho tham số của tôi .. nhưng không có ví dụ cho Apigility tồn tại. Tôi đã đọc cứng mã hóa không hiệu quả, ngay cả như vậy, parameter
đây là năng động và vẫn chưa rõ làm thế nào để làm cuộc gọi mà hoàn toàn khỏi module.config.php
'zf-hal' => array(
'metadata_map' => array(
'Parent\\V1\\Rest\\Service\\ServiceEntity' => array(
'entity_identifier_name' => 'parameter',
'route_name' => 'parent.rest.service',
'route_identifier_name' => 'parameter',
'hydrator' => 'Zend\\Stdlib\\Hydrator\\ObjectProperty',
),
'Parent\\V1\\Rest\\Service\\ServiceCollection' => array(
'entity_identifier_name' => 'parameter',
'route_name' => 'parent.rest.service',
'route_identifier_name' => 'parameter',
'is_collection' => true,
),
'Parent\\V1\\Rest\\Gui\\GuiEntity' => array(
'entity_identifier_name' => 'page',
'route_name' => 'parent.rest.service/gui',
'route_identifier_name' => 'gui_page',
'route_params' => array('parameter'), #<------- unknown setting area, needs to get the parent route identifier somehow...
'hydrator' => 'Zend\\Stdlib\\Hydrator\\ObjectProperty',
),
'Parent\\V1\\Rest\\Gui\\GuiCollection' => array(
'entity_identifier_name' => 'page',
'route_name' => 'parent.rest.service/gui',
'route_identifier_name' => 'gui_page',
'route_params' => array('parameter'),
'is_collection' => true,
),
),
),
chỉnh sửa: thêm các cấu hình router
'router' => array(
'routes' => array(
'parent.rest.service' => array(
'type' => 'Segment',
'options' => array(
'route' => '/api/service[/:parameter]',
'defaults' => array(
'controller' => 'Parent\\V1\\Rest\\Service\\Controller',
),
),
'may_terminate' => true,
'child_routes' => array(
'gui' => array(
'type' => 'Segment',
'options' => array(
'route' => '/gui[/:page]',
'defaults' => array(
'controller' => 'Parent\\V1\\Rest\\Gui\\Controller',
),
),
)
),
),
),
),
Bạn có thể hiển thị vui lòng hiển thị một số chi tiết về cấu hình bộ định tuyến của mình không? – Wilt
@Wilt cảm ơn bạn đã tìm kiếm, tôi đã chỉnh sửa để thêm cấu hình bộ định tuyến. – Erik