Puncte:1

Agățați opțiunile formularului web OPȚIUNILE formularului WEB ID alter()

drapel cn

[{"value_1":"Dragon fly"},{"value_1":"Agapostemon angelicus"},{"value_1":"Albuna oberthuri"},{"value_1":"Callohesma flavopicta"}]

Acestea sunt date JSON pe care trebuie să le folosesc pentru a importa pentru radiouri în formularele web drupal 8. Folosesc hook_webform_options_WEBFORM_OPTIONS_ID_alter() https://www.drupal.org/docs/8/modules/webform/webform-cookbook/how-to-use-options-from-an-external-webservice

Nu pot folosi value_1 ca cheie în radiouri, deoarece nu este unică, așa că trebuie să copiez cumva valoarea în cheie și să obțin aceleași date pe ambele părți, și să arăt așa.

[{"Dragon fly":"Dragon fly"},{"Agapostemon angelicus":"Agapostemon angelicus"},{"Albuna oberthuri":"Albuna oberthuri"},{"Callohesma flavopicta":"Callohesma flavopicta"}] sunt multe liste și multe date, dar aceeași problemă.

Acesta este codul din modulul pe care l-am realizat urmat de instrucțiuni:

 * Implementează hook_webform_options_WEBFORM_OPTIONS_ID_alter().
 */
funcția my_module_webform_options_external_countries_alter(matrice &$opțiuni, matrice &$element) {
  // Încărcați opțiunile stocate în cache.
  if ($cache = \Drupal::cache()->get('external_countries')) {
    $opțiuni = $cache->date;
    întoarcere;
  }

  // Obține date ca matrice asociativă de la serviciul web extern.
  $external_countries_url = 'https://gist.githubusercontent.com/mshafrir/2646763/raw/8b0dbb93521f5d6889502305335104218454c2bf/states_hash.json';
  $opțiuni = json_decode(file_get_contents($external_countries_url), TRUE);

  // Opțiuni în cache, astfel încât să nu fie nevoiți să facem solicitări continue
  // la serviciul web extern.
  \Drupal::cache()->set('external_countries', $options);
}

Geat avatar
drapel de
Doar verifici dacă ai înlocuit CUSTOM_MODULE cu numele mașinii modulului tău?
Dragan Petrovic FSD avatar
drapel cn
Acel CUSTOM_MODULE este copiat din drupal, dar, din păcate, ai înțeles un punct pe care l-am spus că l-am făcut urmat de instrucțiuni, este o greșeală de scriere.
drapel cn
@DraganPetrovicFSD Nu este nevoie să-ți editezi întrebarea pentru a o marca ca „REZOLVAT”. În schimb, ar trebui să așteptați câteva zile și apoi să bifați caseta verde pentru a marca răspunsul dvs. ca răspuns acceptat.
Puncte:3
drapel cn

Tocmai am gasit o solutie. Probabil că nu am explicat bine, așa că nu a fost niciun răspuns. Sper că soluția la problema pe care am avut-o să explice mai bine situația în care mă aflam.

function external_usa_list_webform_options_external_countries_alter(array &$options, array &$element) {
  // Încărcați opțiunile stocate în cache.
  if ($cache = \Drupal::cache()->get('external_countries')) {
    $opțiuni = $cache->date;
    întoarcere;
  }

  // Obține date ca matrice asociativă de la serviciul web extern.
  $external_countries_url = 'https://gist.githubusercontent.com/mshafrir/2646763/raw/8b0dbb93521f5d6889502305335104218454c2bf/states_hash.json';
  $opțiuni = json_decode(file_get_contents($external_countries_url), TRUE);

  $opțiuni = array_combine(array_values($opțiuni), array_values($opțiuni));

  // Opțiuni în cache, astfel încât să nu fie nevoiți să facem solicitări continue
  // la serviciul web extern.
  \Drupal::cache()->set('external_countries', $options);
}

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.