Score:0

ฉันจะเรนเดอร์ไฟล์โดยใช้ฟอร์แมตเตอร์โดยทางโปรแกรมในคอนโทรลเลอร์ได้อย่างไร

ธง lb

ฉันกำลังพยายามสร้างคอนโทรลเลอร์เพื่อแสดงเอกสารประกอบการใช้โมดูล swagger_ui_formatter ที่ให้ตัวจัดรูปแบบไปยังฟิลด์ไฟล์ที่แสดงไฟล์ swagger (yml, yaml, json) โดยใช้ไลบรารีจาวาสคริปต์เพื่อแสดงเอกสารประกอบเหมือนที่เว็บไซต์ swagger ทำ จากนั้นฉันคัดลอกไฟล์ yml ของฉันในไดเร็กทอรีโมดูลและในคอนโทรลเลอร์ของฉันฉันสามารถโหลดไฟล์นี้ได้

  ฟังก์ชั่นสาธารณะ buildApiDocumentation () {

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

    $searchFiles = '/^.*\.(yml)$/';
    $directory = dirname(__DIR__,2).'/docs';

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

แต่ฉันไม่รู้ว่าจะเรนเดอร์ไฟล์นี้โดยใช้ตัวจัดรูปแบบ swagger ที่โมดูลมีให้ได้อย่างไร ฉันไม่สามารถใช้วิธีดั้งเดิมในการใช้ตัวจัดรูปแบบนี้ สร้างประเภทเนื้อหาด้วยฟิลด์ไฟล์ และหลังจากนั้นสร้างมุมมองและแสดงผล เนื่องจากเป็นกระบวนการที่ต้องทำด้วยตัวเองมาก และฉันต้องแก้ไขไฟล์เอกสารประกอบ api ในไดเร็กทอรีที่มีเพียงทีมพัฒนาเท่านั้นที่สามารถอัปเดตได้

Kevin avatar
in flag
เหตุใดคุณจึงไม่สามารถส่งคืนอาร์เรย์เรนเดอร์ด้วยฟังก์ชันธีมที่กำหนดเองเพื่อทำสิ่งที่คุณต้องการได้
apaderno avatar
us flag
A field formatter is used to render an entity field. Without an entity that is rendered, a field formatter cannot be used.
Mauricio avatar
lb flag
@apaderno interesting... i don't know that, so i need to create a node with this file and using this node i can render because now is an entity, right?
apaderno avatar
us flag
นั่นเป็นวิธีเดียวที่จะใช้ตัวจัดรูปแบบฟิลด์
Score:0
ธง lb

ตามที่ @apaderno พูดถึงว่าเราไม่สามารถใช้ฟอร์แมตเตอร์แบบนั้นได้ ฉันจึงตัดสินใจสร้างโมดูลของตัวเองเพื่อแสดงเอกสารประกอบของฉันโดยใช้ อย่างเป็นทางการกร่าง uiและโหลดไฟล์โดยใช้คำสั่งจาวาสคริปต์

ขอบคุณสำหรับการช่วยเหลือ.

Score:0
ธง de

คุณสามารถคืน BinaryFileRespose จากตัวควบคุมของคุณ:

ใช้ Symfony\Component\HttpFoundation\BinaryFileResponse;

ฟังก์ชั่นสาธารณะ buildApiDocumentation () {

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

  $searchFiles = '/^.*\.(yml)$/';
  $directory = dirname(__DIR__,2).'/docs';

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

  ส่งคืน BinaryFileResponse($file); ใหม่
}
Mauricio avatar
lb flag
Thanks for your answer, but what i'm looking for is how can i use a formatter to render this file, using the formatter that swagger_ui_formatter module provide. i need to render a yml like swagger website do.
Jaypan avatar
de flag
I don't know this module, but if it has a field formatter, it means the data can be saved into a field. You need to create a field of that type, save the value to that field, and set that field to render output using that field formatter.
Mauricio avatar
lb flag
Thanks @jaypan i'm going to try this creating a node programmatically, set the file and after render it.

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา