Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Views ›

[gelöst] node validierung mit hook_nodeapi()

Eingetragen von netzkoop (1820)
am 26.11.2008 - 17:18 Uhr in
  • Views
  • Drupal 6.x

Hallo zusammen,
ich habe einen CCK-Nodetyp erstellt: anruf
Diesen möchte ich nun validieren beim node/xy/add oder node/xy/edit und bekomme es nicht hin.
Mein Ansatz:

<?php

function anruf_nodeapi(&$node, $op, $a3 = 'anruf_node_form', $a4 = NULL) {
switch (
$op) {
  case
'validate':
   if (
$node->field_ort == 'falsch') {
   
form_set_error('field_ort', t('Diese Eingabe ist ungültig'));
   }
  break;
}
}
?>

Funktioniert so leider nicht...
Wo schreibe ich die function hin? In die template.php, in die node.tpl.php ?
Muss ich $node noch extra übergeben? Ich dachte, das wird für jeden Node vom Typ anruf ausgeführt.
Oder muss ich das validate anders ansprechen?
Fragen über Fragen...
Merci

‹ Dringend Hilfe: Content Taxonomy views bzw ansichtentutorial ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Validation API

Eingetragen von quiptime (4972)
am 26.11.2008 - 17:37 Uhr

Eventuell bringt Dich das hier weiter: Validation API

Vor allem das hoert sich interessant an:

Validation API schrieb

Included with this project is an AJAX Validation module that allows you to run a form validation in AJAX and returns errors without reloading the page.

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

Danke für den Tipp! Hab ich

Eingetragen von netzkoop (1820)
am 26.11.2008 - 20:11 Uhr

Danke für den Tipp! Hab ich installiert und scheint vielversprechend.
Ich werde berichten, sobald ich es hinbekomme.

Für meinen Ehrgeiz doch tiefere Drupal-Einsicht zu gewinnen:
Kann vielleicht jemand was zu einer Lösung mittels hook_nodeapi()
sagen?
Das wäre wunderbar :-)
Merci

  • Anmelden oder Registrieren um Kommentare zu schreiben

hook_validate

Eingetragen von quiptime (4972)
am 27.11.2008 - 11:40 Uhr
Zitat:

Kann vielleicht jemand was zu einer Lösung mittels hook_nodeapi() sagen?

Was glaubst Du warum ich in meiner Antwort nicht auf hook_nodeapi eingegangen bin?

Guckst Du: hook_validate

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

Tja, weiss nicht genau.

Eingetragen von netzkoop (1820)
am 27.11.2008 - 13:17 Uhr

Tja, weiss nicht genau. Vielleicht deshalb?

Zitat:

Changes made to the $node object within a hook_validate() function will have no effect. The preferred method to change a node's content is to use or hook_nodeapi($op='submit') instead

Allerdings ist mir das Prinzip noch nicht klar.
Ich dachte mit hook_nodeapi($op='validate') habe ich Einfluss auf das Node-Object beim Anlegen oder Editieren.
Analog zu einer validate() Function direkt auf die Form.

Sehe ich mir das Formular unter node/add/anruf an findet sich dort
<input id="edit-anruf-node-form" type="hidden" value="anruf_node_form" name="form_id"/>

Zuerst hab ich folgendes versucht:

<?php

function anruf_node_form_validate($form, &$form_state) {
  if (
$form_state['values']['field_ort'] == 'falsch') {
   
form_set_error('field_ort', t('Diese Eingabe ist ungültig'));
  }
}
?>

was allerdings auch nicht funktioniert.
Warum eigentlich nicht?
So bin ich überhaupt nur auf hook_nodeapi gekommen,
weil ich dachte auf CCK-Forms habe ich vielleicht aus irgendwelchen Gründen keinen Einfluss.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Drupal 6 Form API - FAPI

Eingetragen von quiptime (4972)
am 27.11.2008 - 13:59 Uhr

Irgendeine Form, allerdings D5:

<?php
/**
* Menu callback; handle the adding/editing of a new menu group.
*/
function menu_groups_edit_group_form($type, $gid = 0) {
 
$form['menu_groups']['group_add']['group_name'] = array(
   
'#type' => 'textfield',
   
'#title' => 'Name',
   
'#required' => TRUE,
   
'#default_value' => $item['name'],
   
'#description' => 'Enter a name for the menu group. The human-readable name of this menu group. It is recommended that this name begins with a capital letter and consists only of letters, numbers, and spaces. This name must be unique to this menu group.',
   
'#weight' => 0,
   
'#validate' => array('my_validate' => array())
  );
  return
$form;
}

// Die Validierungsfunktion

function my_validate () {
 
// Validierungslogik
}

?>

Der gepostete Code ist Drupal 5 und dient nur der optischen Demonstration.

Drupal 6

Sehe Dir auf api.drupal.org die Validierungsmoeglichkeiten in der FAPI 6 fuer Drupal 6 an.

#element_validate

<?php
function myelement_validate($element, &$form_state) {
   if (empty(
$element['#value']) {
    
form_error($element, t('This field is required.'));
   }
}
?>

-------------
quiptime

Nur tote Fische schwimmen mit dem Strom.

XING

  • Anmelden oder Registrieren um Kommentare zu schreiben

Lösung

Eingetragen von netzkoop (1820)
am 07.12.2008 - 18:53 Uhr

Hab es hinbekommen...
Funktioniert wunderbar mit nodeapi() - ich mach auch noch eine Handbuchseite draus.
Mir war nicht klar, dass CCK die Felder als array zurückgibt auch bei Einzelwerten.

<?php

function sitehelper_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) {
  if(
$node->type == 'anruf') {
   
   
#print '<pre>';
    #print_r($node);
    #print '</pre>';
   
   
switch ($op) {
      case
'view':
      break;

      case
'validate':
       
       
// FEHLER falls in Ort was eingetragen wird und Landkreis bleibt bei "keine Angabe"
       
$ort = $node->field_ort[0][value];
       
$landkreis = $node->field_landkreis[0][value];
        if((
$ort != '') && ($landkreis == 'keine Angabe')) {
         
form_set_error('field_landkreis', 'Landkreis: Unerlaubter Wert da Ort nicht leer');
        }
      break;
    }
  }
}
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 2 Wochen 6 Tagen
  • Hey danke
    vor 3 Wochen 9 Stunden
  • Update: jetzt gibt's ein
    vor 3 Wochen 1 Tag
  • Hallo, im Prinzip habe ich
    vor 3 Wochen 5 Tagen
  • Da scheint die Terminologie
    vor 3 Wochen 5 Tagen
  • Kannst doch auch alles direkt
    vor 4 Wochen 2 Tagen
  • In der entsprechenden View
    vor 4 Wochen 2 Tagen
  • Dazu müsstest Du vermutlich
    vor 4 Wochen 2 Tagen
  • gelöst
    vor 6 Wochen 6 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 7 Wochen 10 Stunden

Statistik

Beiträge im Forum: 250233
Registrierte User: 20459

Neue User:

  • Znogsnernoimb
  • ByteScrapers
  • Mroppoofpaync

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 25 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association