Получение меню, доставленного через RESTPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Получение меню, доставленного через REST

Сообщение Anonymous »

Я пытаюсь получить меню через REST, и я создал новый модуль и плагин ресурсов для отдыха, который позволяет GET для /entity/restmenu/{menu_name}.

Я могу успешно вернуть этот пример в формате JSON, используя эту функцию, когда я нажимаю на URL-адрес.

Код: Выделить всё

public function get(EntityInterface $entity) {
$result = array();
for ($i = 0; $i < 10; $i++) {
$temp = array(
'title' => 'Test ' . $i,
'href' => '#/' . $i
);
array_push($result, $temp);
}
return new ResourceResponse(json_encode($result));
}
Я не могу понять, как загрузить меню на основе $entity. Если я нажму на свой URL-адрес (http://dang.dev:8888/entity/restmenu/ma ... t=hal_json), значение $entity будет 'main', которое является именем компьютера главное меню.

Я пробовал использовать дерево меню Drupal, но мне не повезло, и отладить эту штуку только с помощью ответов JSON довольно сложно.

Как получить заголовки и пути к пунктам меню на основе имени машины меню?

РЕДАКТИРОВАТЬ

Хорошо, вроде разобрался.

Код: Выделить всё

public function get($entity) {
$menu_name = $entity;
$menu_parameters = \Drupal::menuTree()->getCurrentRouteMenuTreeParameters($menu_name);
$tree = \Drupal::menuTree()->load($menu_name, $menu_parameters);
$renderable = \Drupal::menuTree()->build($tree);
$result = array();

foreach (end($renderable) as $key => $val) {
$temp = array(
'menu_item' => $val,
'route' => $key
);
array_push($result, $temp);
}
return new ResourceResponse(json_encode($result));
}
Сейчас будет выведено:

Код: Выделить всё

[
{
"menu_item":{
"is_expanded":false,
"is_collapsed":false,
"in_active_trail":false,
"attributes":"",
"title":"Home",
"url":{

},
"below":[

],
"original_link":{

}
},
"route":"standard.front_page"
},
{
"menu_item":{
"is_expanded":false,
"is_collapsed":false,
"in_active_trail":false,
"attributes":"",
"title":"Communities",
"url":{

},
"below":[

],
"original_link":{

}
},
"route":"menu_link_content:139d0413-dc50-4772-8200-bc6c92571fa7"
}
]
есть идеи, почему URL или original_link пусты?

Подробнее здесь: https://stackoverflow.com/questions/352 ... d-via-rest
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»