Рейтинг:0

Как я могу программно визуализировать файл с помощью средства форматирования в контроллере?

флаг lb

Я пытаюсь создать контроллер для визуализации документации чванства с помощью модуля swagger_ui_formatter которые предоставляют средство форматирования для поля файла, которое отображает файлы swagger (yml, yaml, json) с использованием библиотек javascript для отображения документации, как это делает веб-сайт swagger. Затем я копирую свой файл yml в каталог моего модуля, и в моем контроллере я могу загрузить этот файл.

  общедоступная функция buildApiDocumentation() {

    $file_system = \Drupal::service('file_system');

    $searchFiles = '/^.*\.(yml)$/';
    $directory = имя_каталога(__DIR__,2).'/docs';

    $file = $file_system->scanDirectory($directory, $searchFiles, ['recurse' => FALSE]);
}

Но я не знаю, как я могу отобразить этот файл с помощью средства форматирования swagger, которое предоставляет модуль, я не могу использовать традиционный способ использования этого средства форматирования, создав тип контента с полем файла, а затем создав представление и визуализировать это очень ручной процесс, и мне нужно исправить файл документации API в каталоге, который может обновлять только команда разработчиков.

Kevin avatar
флаг in
Почему вы не можете вернуть массив рендеринга с пользовательской функцией темы, чтобы делать то, что вы хотите?
apaderno avatar
флаг us
Средство форматирования поля используется для отображения поля сущности.Без визуализируемой сущности средство форматирования поля использовать нельзя.
Mauricio avatar
флаг lb
@apaderno интересно ... я этого не знаю, поэтому мне нужно создать узел с этим файлом, и с помощью этого узла я могу визуализировать, потому что теперь это сущность, верно?
apaderno avatar
флаг us
Это единственный способ использовать средство форматирования полей.
Рейтинг:0
флаг de

Вы можете вернуть BinaryFileRespose с вашего контроллера:

используйте Symfony\Component\HttpFoundation\BinaryFileResponse;

общедоступная функция buildApiDocumentation() {

  $file_system = \Drupal::service('file_system');

  $searchFiles = '/^.*\.(yml)$/';
  $directory = имя_каталога(__DIR__,2).'/docs';

  $file = $file_system->scanDirectory($directory, $searchFiles, ['recurse' => FALSE]);

  вернуть новый BinaryFileResponse($file);
}
Mauricio avatar
флаг lb
Спасибо за ваш ответ, но я ищу, как я могу использовать средство форматирования для рендеринга этого файла, используя средство форматирования, которое предоставляет модуль swagger_ui_formatter. Мне нужно отобразить yml, как это делает веб-сайт swagger.
Jaypan avatar
флаг de
Я не знаю этот модуль, но если в нем есть форматер полей, значит, данные можно сохранять в поле. Вам нужно создать поле этого типа, сохранить значение в этом поле и настроить это поле для вывода вывода с использованием средства форматирования этого поля.
Mauricio avatar
флаг lb
Спасибо @jaypan, я попробую создать узел программно, установить файл и после его рендеринга.
Рейтинг:0
флаг lb

как @apaderno упомянул, что мы не можем использовать средство форматирования таким образом, тогда я решил создать свой собственный модуль для визуализации моей документации чванства с использованием официальный интерфейс чванстваи загрузите файл с помощью директивы javascript.

Спасибо за помощь.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.