it-swarm.it

Controlla se un campo è vuoto

Come verificare che un campo sia vuoto quando si ha l'oggetto $ node ?.

Ho trovato questa soluzione possibile:

$field = field_get_items('node', $node, 'field_post_image');

Ora posso controllare:

[~ ~ #] aggiornamento [~ ~ #]. Ups! Questo non è affidabile, anche se prometto che ha funzionato per me ieri.

isset($field);

ma mi chiedo se c'è un modo migliore.

Illuminami

17
corbacho

Se leggi la documentazione la funzione restituisce FALSE se non ci sono dati. isset() fallirebbe davvero perché stai assegnando FALSE alla variabile, quindi è stata effettivamente impostata su qualcosa. La sintassi corretta sarebbe:

$field = field_get_items('node', $node, 'field_post_image');
if ($field) {
   //Do something with the field
}
else{
   //There are no results
}
30
Sam152

È possibile utilizzare il frammento seguente per verificare se un campo è vuoto.

$info = field_info_field($field_name);
$function = $info['module'] . '_field_is_empty';

if (function_exists($function)) {
  $value = field_get_items('node', $node, $field_name);
  $is_empty = $function($value[0], $info);
}

Questo codice è più sicuro, poiché diversi campi sono considerati vuoti in condizioni diverse. Vedi, ad esempio, la differenza tra file_field_is_empty () , number_field_is_empty () e taxonomy_field_is_empty () : taxonomy_field_is_empty() checks la proprietà tid del parametro $item, mentre number_field_is_empty() controlla il valore proprietà dello stesso parametro. I campi personalizzati potrebbero richiedere una condizione più complessa da verificare, al fine di considerare il campo vuoto.

La descrizione per hook_field_is_empty () fornita nella documentazione è la seguente:

Definire ciò che costituisce un elemento vuoto per un tipo di campo.

8
kiamlaluno

Abbiamo trovato il valore grezzo in ($content['field_name']['#items'][0][value]), quindi puoi determinare se il campo è vuoto o meno con l'espressione

(! Empty ($ contenuto [ 'FIELD_NAME'] [ 'articoli #'] [0] [valore]))

dove field_name corrisponde al nome del campo desiderato.

2
eduardocs

Drupal 8

Se qualcuno ha bisogno della stessa risposta in D8, è quello che faccio per testare il mio campo:

if ($entity->hasField('field_event_date_start')
  && !$entity->get('field_event_date_start')->isEmpty()) {
  // Do something ...
}
1
Pauleau