Пользовательские ресурсы: загрузить объект uuid

Я создал специальный ресурс, который расширяет класс EntityResource. Таким образом, я могу использовать все встроенные функции, которые предоставляет ядро ​​Drupal на ресурсе сущности по умолчанию, но я все же могу добавить дополнительные проверки. Это прекрасно работает.

Я определил свой канонический маршрут в моем ресурсе, подобном этому /api/my-endpoint/{node} Таким образом, я могу извлекать и исправлять узлы, предоставляя nid.

Но после тщательного рассмотрения я хочу реализовать /api/my-endpoint/{node_uuid} или даже /api/my-endpoint/{node_custom_field} Так что я могу получить (и заплатить) узел с помощью uuid вместо nid.

Ofpourse Drupal не знает этот параметр и поэтому не может загрузить соответствующий объект узла, что приводит к фатальным ошибкам. Кто-нибудь есть идея, как я могу сделать эту работу? Я попытался реализовать пользовательский RoutingParamConverter, но не получил его на работу ... Любая помощь приветствуется!

8
5 голосов | спросил Robin 15 FebruaryEurope/MoscowbWed, 15 Feb 2017 14:26:07 +0300000000pmWed, 15 Feb 2017 14:26:07 +030017 2017, 14:26:07

1 ответ


0

Пока у вас есть uuid объекта, вы можете использовать интерфейс хранения объектов Drupal для его загрузки с учетом этого свойства. Это должно быть так же просто, как использовать метод loadByProperties.

$node_loaded_by_uuid = \Drupal::entityTypeManager()->getStorage('node')->loadByProperties(['uuid' => $your_uuid]);
ответил Matt 6 PMpFri, 06 Apr 2018 23:44:36 +030044Friday 2018, 23:44:36

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132