it-swarm-eu.dev

určit prvky formuláře $, které mají být vyloučeny ze zobrazení?

Chci skrýt určité prvky ve formuláři pomocí form_alter nebo souboru šablony. Někde jsem četl, že v Drupal 7, můžeme určit elementy $ $, takže se nebudou zobrazovat ve formě, ale nemohu si vzpomenout!

20
Serjas

Použití unset() není dobrým řešením pro formuláře (jak si myslím, že víte), protože nikdy nevíte, co obslužné rutiny odesílání/ověřování mohou očekávat, že nezpracovaný prvek bude existovat, když budou zpracovány. To může vést k nežádoucím chybám.

Existují tři metody, které můžete bezpečně použít k „skrytí“ elementu formuláře

  • Použijte '#type' => 'value' na prvku, což bude mít za následek, že hodnota prvku bude stále předávána funkcím odesílání/ověřování pomocí jeho #value jako normálně. Toto je moje preferovaná metoda.
  • Použijte '#access' => FALSE na prvku, který označuje, že by neměl být odeslán na obrazovku.
  • Použijte '#type' => 'hidden' jak navrhl Bart (ačkoli použití tohoto záleží na vašem případu použití; představuji si, že pokud se snažíte skrýt hodnotu elementu formuláře, který nechcete vydávat ve formě jako skrytý vstup).
29
Clive

Pokud používáte soubor šablony, můžete skrýt obsah pomocí hide () .

Pokud chcete skrýt prvek formuláře v hook_form_alter, Může být vaše nejlepší volba unset().

Pokud chcete pouze uložit hodnotu, můžete použít také '# type' => 'hidden' .

4
Bart

Zjistil jsem, že pomocí #access to false můžete rozbít některé formuláře, pokud jsou použity na tlačítka Odeslat nebo podobně. V těchto případech jsem právě použil CSS ke skrytí prvků:

$form['basic']['submit']['#attributes']['class'][] = 'element-hidden';

Jen další možnost.

4
Tom James