Puncte:3

Stocarea corectă a unei matrice într-un obiect de configurare

drapel in

Într-un obiect de configurare, vreau să stochez o matrice de valori. Cheile contează. Valoarea stocată provine dintr-un element casete de selectare, astfel încât matricea ar arăta cam așa:

['article' => 'articol', 'pagina' => 'pagina']

Iată schema de configurare:

mymodule.settings:
  tip: config_entity
  etichetă: „Mymodule Breadcrumb Settings”
  cartografiere:
    node_bundles:
      tip: cartografiere
      etichetă: „Agrupați nume de mașini”.

Acest lucru pare să funcționeze la suprafață, dar executarea unui test funcțional are ca rezultat:

Erori de schemă pentru mymodule.settings cu următoarele erori: mymodule.settings:node_bundles.page lipsește schema

ceea ce ma face sa adaug:

protejat $strictConfigSchema = FALSE;

apoi testele trec - dar apoi se declanșează eroarea standardelor de codare Drupal.

Care este definiția corectă a schemei de care am nevoie?

Puncte:4
drapel in

Acesta este un caz pentru utilizarea unui secvenţă. Spre deosebire de mapare, cheile sunt opționale și nu trebuie descrise de schemă.

Din Schema de configurare/metadate:

secvență: proprietate asupra valorii tipului de secvență, utilizată pentru a defini o listă arbitrară de valori definite. Într-o secvență, cheile sunt opționale și pot fi numere întregi sau șiruri de caractere și nu sunt mapate în mod explicit. Doar tipurile de valori trebuie definite în schemă.

Mai jos în aceeași documentație, vedem exemple pentru Definiții de secvență. Al doilea exemplu, Definirea unei noi scheme, seamana foarte mult cu cazul tau.

Definiția schemei:

domain.language_negotiation:
  tip: config_object
  etichetă: „Negociere privind limba domeniului”
  cartografiere:
    limbă_domeniu:
      tip: secvență
      etichetă: „Domenii”
      secvenţă:
        tip: sfoară
        etichetă: „Mapping Langcode”

Exemplu de configurație acceptată de definiția schemei de mai sus:

limbă_domeniu:
  example_local: en
  un_exemplu_local: af
  două_exemple_locale: af
  trei_exemple_locale: en
  four_example_local: en

Pentru cazul dvs. specific, puteți actualiza definiția schemei ca:

mymodule.settings:
  tip: config_entity
  etichetă: „Mymodule Breadcrumb Settings”
  cartografiere:
    node_bundles:
      # Schimbați de la mapare la secvență
      tip: secvență
      etichetă: „Agrupați nume de mașini”.
      # NOU: descrieți valorile secvenței dvs.
      secvenţă:
        tip: sfoară
        etichetă: „orice ați numi „valorile” matricei node_bundles”
Kevin avatar
drapel in
Am încercat să trec la o secvență, testul raportează apoi: „Erori de schemă pentru mymodule.settings cu următoarele erori: mymodule.settings:node_bundles.0 lipsește schema "
sonfd avatar
drapel in
Actualizat cu ceea ce cred că ar trebui să vă rezolve problema.
Kevin avatar
drapel in
A funcționat, mulțumesc. Acum pot renunța la verificarea strictă și linter-ul este în regulă.

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.