Puncte:1

Crearea de șablon și variabile personalizate în modul

drapel cn

Lucrez cu D8 și de obicei nu fac tematică, așa că sunt blocat cu o problemă.

Am o rută personalizată într-un modul personalizat care apelează o metodă checkinConfirmation() pe un controler.

În interiorul acelui controler, am asta:

funcția publică checkinConfirmation() {
  $output['items'] = [
    '#type' => 'set de câmpuri',
    '#title' => t('Articole înregistrate'),
  ];
  $output['items']['name'] = [
    '#prefix' => '<h2>',
    '#sufix' => '</h2>',
    '#markup' => t('Nume'),
  ];
  $output['#theme'] = 'confirmare_circulare';
  $ieșire['#output'] = $ieșire;

  returnează $ieșire;
}

și în interiorul temei mele, am asta în interiorul hook_theme()

funcția publică mytheme_theme() {
  $theme['circulation_confirmation'] = [
    'template' => 'pagina/circulare--confirmare',
    'variabile' => [
      'ieșire' => [],
    ],
  ];
}

În șablonul meu, am un {{ ieșire }} variabilă pentru a imprima rezultatul randat furnizat de la $output. Problema este totuși că nu primesc elementele din șablon și nu-mi dau seama de ce. Șablonul este introdus, deoarece învelișul din fișierul șablon este aplicat pe pagină, iar containerul principal este lățimea care ar trebui să aibă.

Folosind aceasta în schimb (în controler):

întoarcere [
  '#theme' => 'confirmare_circulare',
  '#output' => $output,
];

Cel puțin primesc datele, dar nu pare să folosească șablonul pe care l-am furnizat, deoarece ambalajul a dispărut și containerul principal are lățime completă în loc de lățimea care ar trebui să fie.

De obicei nu fac tematică sau șabloane, iar când o fac, de obicei, sunt forme, așa că pot să-i transmit „element de randare” => „formular”, pentru a-l face să treacă elementele de formular la temă. Nu sunt sigur ce fac greșit.

Te rog ajuta-ma?

Rainer Feike avatar
drapel in
Nu ar trebui să faci asta: $output['#output'] = $output; Dar încercați să adăugați un „#type” => „markup” la articolele dvs. #markup
Ex0r avatar
drapel cn
Asta nu a adus nicio schimbare. În plus, nici setul de câmp nu este extras.
beltouche avatar
drapel cn
Aveți o singură liniuță de subliniere în retur['#theme'], dar o cratimă dublă în numele șablonului.
Puncte:0
drapel in

Puteți încerca asta:

În modulul dvs. personalizat:

function custom_module_theme() {
    întoarcere [
        'circulation_confirmation' => [
            'render element' => 'ieșire',
            'variabile' => [
                'ieșire' => [],
            ],
        ],
    ];

Și în controlerul tău:

funcția publică checkinConfirmation() {
    $rtn = [
        '#theme' => 'confirmare_circulare',
        '#output' => [],
    ];

    $rtn['#output']['items'] = [
        '#type' => 'fieldset',
        '#title' => t('Articole înregistrate'),
    ];

    $rtn['#output']['items']['name'] = [
        '#prefix' => '<h2>',
        '#sufix' => '</h2>',
        '#markup' => t('Nume'),
    ];

    returnează $rtn;
}

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.