Intercettare e controllare valori di campi CCK

9 contenuti / 0 new
Ultimo contenuto
Intercettare e controllare valori di campi CCK

Sto cercando di creare un piccolo moduletto in cui inserire dei controlli custum ..dentro al miomodulo.module ho inserito questo codice, sperando che alla pressione del SALVA su un tipo di contenuto entrasse almeno in funzione...e invece nulla.
che sbaglio?

<?php
/**
* Prova di creazione modulo per
* controllo valori campi CCK
*/
function miomodulo_install() {
  db_query("UPDATE {system} SET weight = 100 WHERE name='miomodulo' AND type='module'");
}
function form_overrides_form_alter(&$form, $form_state, $form_id) {
form_set_error($form_id, t("Error - $form_state ."));
}

La funzione _install deve stare nel file .install.
La funzione form_set_error si usa all'interno delle funzioni *_validate non in hook_form_alter.

Dove hai preso le idee per questo codice?

Pinolo wrote:
La funzione _install deve stare nel file .install.
La funzione form_set_error si usa all'interno delle funzioni *_validate non in hook_form_alter.

Dove hai preso le idee per questo codice?

Ho preso spunto da questo http://groups.drupal.org/node/23928

Mi puoi spiegare meglio la funzione *_validate? Anche un esempio stupidissimo e poi lo implemento..

http://drupal.org/node/751826 scorri fino alla sezione "Validating forms"

Ottimo spunto, pero' non si parla di moduli, ma di scrivere direttamente PHK.
Quello che dovrei fare io invece e' intercettare alcuni campi CCK e farvi dei controlli supplementari.

È proprio quello di cui parla la pagina che ho linkato. Per intercettare i dati di un form, devi scrivere un modulo, basandoti sui criteri indicati nella quickstart guide per la Form API. In realtà, se il form che vuoi intercettare è il form di un nodo (come credo), puoi anche intercettare i valori usando hook_nodeapi o i suoi corrispettivi in D7 (sempre in un tuo modulo aggiuntivo), intervenendo sull'$op (cioè la fase o evento) 'validate'.

http://api.drupal.org/api/drupal/developer--hooks--core.php/function/hoo...

Ma ad esempio

hook_field_validate

viene richiamato su ogni sottomissione di qualsiasi tipo di contenuto?

sto cercando di forzare un messaggio di errore giusto per capire se viene richiamata quella funzione

function miomodulo_field_validate($entity_type, $entity, $field, $instance, $langcode, $items, &$errors) {
  foreach ($items as $delta => $item) {
    if (!empty($item['value'])) {
        $errors[$field['field_name']][$langcode][$delta][] = array(
          'error' => 'messaggio_test',
          'message' => t('%name: passaggio da qui.'),
        );
    }
  }
}

dove sbaglio ? :(

Questa funzione non l'ho mai usata. Ma direi che leggendo la documentazione, tramite il parametro entity_type dovresti essere i grado di filtrare su quali form fare la validazione.

Quello che non mi e' chiaro e' che da come ho scritto quella funzione, m'aspetterei che per ogni item non vuoto mi preparasse una riga di errore e poi me la facesse vedere alla rivisualizzazione della pagina.
E invece, non mi visualizza nulla...come se quella funzione non venisse mai richiamata. :(