it-swarm-eu.dev

Ověření pole a zvýraznění

Jak mohu získat vlastní validaci Form API API pro zvýraznění pole stejným způsobem jako neúspěšné #required validation? (Viz připojená grafika)

Poznámka: Grafika:

1) (Zelená čára) Název společnosti je prázdný. '#required' Chyba je zaznamenána a pole je zvýrazněno červeně.

2) (modrá čára) Web není správný. „Vlastní ověření“ je zaznamenána chyba, ale pole NENÍ zvýrazněno.

Jak mohu automaticky zvýraznit pole „Webové stránky“ při selhání ověření a odstranit jej po úspěchu?

Aktuálně používá: form_set_error('', t('Your website address is incorrectly formatted.'));

Vidět enter image description here

6
Citricguy

Zkusili jste použít hook_field_validate () ? (editovat) Právě jsem si uvědomil, že nepoužíváte nové Field API , ale pouze Form API. Možná to můžete postavit jako pole? Pokud jste obeznámeni s Form API v d6, můžete si za pár hodin vyzvednout Field API. Field API je další úroveň špatnosti.

mám vlastní pole, které zaznamenává pracovní dobu. Mám nastaveno, že pokud je vybrán den do, musí existovat den ode dne. Více či méně jsem implementoval příklad dávající v api.drupal.org.

*  Implementation of hook_field_validate()
*/
function hours_field_validate($entity_type, $entity, $field, $instance, $langcode, $items, &$errors) {
  foreach ($items as $delta => $item) {
    if ($item['end_day'] != '--' && $item['start_day'] == '--') {
      $errors[$field['field_name']][$langcode][$delta][] = array( 
        'error' => t('A from day needs to be choosen if a to day is selected. If they are the same -- forexample, Monday and Monday, the whole line when viewed will only be for Monday.'),
      );
    }
  }
}
2
Adam S

Jako první parametr form_set_error() předejte název pole, které má být zvýrazněno. Pokud se jedná o vnořenou strukturu, předejte ji hranatými závorkami, například:

form_set_error('[your][nested][field]', 'Your Error Message');

Okolo toho je výhodný obal, form_error , který vezme prvek místo řetězce, například:

form_error($form['your_field'], 'Your Error Message');

Viz také docs to form_set_error() (d7) .

3
Hanno Fietz

Pokud je prvek formuláře definován takto:

$form['panes']['webform_nid31'][0]['contact_person'] = array( ... );

vaše volání form_set_error by mělo vypadat takto:

form_set_error('panes][webform_nid31][0][contact_person',
                t('You must select a name for this group of settings.'));

Musíte nastavit úplnou cestu k prvku, bez vnějšího [ a ]. Mohli byste mít mnoho polí „contact_person“ v jedné podobě, pouze v různých větvích stromu formuláře. Použití pouze posledního indexu by způsobilo nejednoznačné nastavení chyb, takže to není podporováno. Alespoň oficiálně. Může to fungovat, ale pouze jako nezdokumentovaná funkce.

Formátování tohoto řetězce je popsáno v API :

Parametry

$ name: Název prvku formuláře. Pokud je vlastnost #parents prvku formuláře pole („foo“, „bar“, „baz“), můžete nastavit chybu na „foo“ nebo „foo] [bar] [baz '. Nastavení chyby na 'foo' nastaví chybu pro každý prvek, kde pole #parents začíná 'foo'.

Zkopírováno z pole form_set_error () není zvýrazněno červeně

2
colan