Puncte:0

Cum pot reda un fișier folosind un formatator programatic într-un controler?

drapel lb

Încerc să creez un controler pentru a reda o documentație grozavă folosind modulul swagger_ui_formatter care furnizează un formatator pentru câmpul de fișiere care redă fișiere Swagger (yml, yaml, json) folosind biblioteci javascript pentru a afișa documentația, așa cum o face site-ul web Swagger. Apoi îmi copiez fișierul yml în directorul modulului și în controlerul meu pot încărca acest fișier.

  funcția publică buildApiDocumentation() {

    $sistem_fișiere = \Drupal::service('sistem_fișiere');

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

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

Dar nu știu cum pot reda acest fișier folosind formatatorul swagger pe care îl oferă modulul, nu pot folosi modul tradițional de a folosi acest formatator, creând un tip de conținut cu un câmp de fișier și după aceea creând o vizualizare și randare acesta, deoarece este un proces foarte manual și trebuie să repar fișierul de documentație API într-un director pe care doar echipa de dezvoltare îl poate actualiza.

Kevin avatar
drapel in
De ce nu puteți returna o matrice de randare cu o funcție de temă personalizată pentru a face ceea ce doriți?
apaderno avatar
drapel us
Un formatator de câmp este utilizat pentru a reda un câmp de entitate.Fără o entitate care este redată, un formatator de câmp nu poate fi utilizat.
Mauricio avatar
drapel lb
@apaderno interesant... nu știu asta, așa că trebuie să creez un nod cu acest fișier și folosind acest nod pot reda pentru că acum este o entitate, nu?
apaderno avatar
drapel us
Acesta este singurul mod de a folosi un formatator de câmp.
Puncte:0
drapel de

Puteți returna a BinaryFileRespose de la controlerul dvs.:

utilizați Symfony\Component\HttpFoundation\BinaryFileResponse;

funcția publică buildApiDocumentation() {

  $sistem_fișiere = \Drupal::service('sistem_fișiere');

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

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

  returnează un nou BinaryFileResponse($fișier);
}
Mauricio avatar
drapel lb
Vă mulțumesc pentru răspuns, dar ceea ce caut este cum pot folosi un formatator pentru a reda acest fișier, folosind formatatorul oferit de modulul swagger_ui_formatter. Trebuie să redau un yml, așa cum o face site-ul web Swagger.
Jaypan avatar
drapel de
Nu cunosc acest modul, dar dacă are un formatator de câmp, înseamnă că datele pot fi salvate într-un câmp. Trebuie să creați un câmp de acest tip, să salvați valoarea în acel câmp și să setați acel câmp pentru a reda ieșirea folosind acel formatator de câmp.
Mauricio avatar
drapel lb
Mulțumesc @jaypan, voi încerca asta creând un nod în mod programatic, setați fișierul și după ce îl redau.
Puncte:0
drapel lb

după cum a menționat @apaderno, nu putem folosi un formatator în acest fel, apoi am decis să-mi construiesc propriul modul pentru a-mi reda documentația de amăgire folosind interfață de utilizare oficialăși încărcați fișierul folosind o directivă javascript.

Mulțumesc pentru ajutor.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.