[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Wie funktioniert XFORM-Validation "customfunction"? - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Benutzeravatar
cukabeka
Beiträge: 821
Registriert: 31. Mai 2006, 00:01
Wohnort: Aschaffenburg

Wie funktioniert XFORM-Validation "customfunction"?

15. Jun 2013, 21:23

Hallo,

kann mir jemand erklären, wie die XFORM-Validation "customfunction" funktioniert?

Code: Alles auswählen

validate|customfunction|label|functionname|weitere_parameter|warning_message
Ich möchte zB prüfen, ob ein Passwort mindestens 6 Zeichen lang ist und mindestens eine Zahl und einen Großbuchstaben aufweist. Ginge das damit?
Viele Grüße
cukabeka

Benutzeravatar
Xong
Beiträge: 2081
Registriert: 5. Jun 2008, 08:30
Wohnort: Halle (Saale)

Re: Wie funktioniert XFORM-Validation "customfunction"?

16. Jun 2013, 01:46

Hi Stefan!
cukabeka hat geschrieben:kann mir jemand erklären, wie die XFORM-Validation "customfunction" funktioniert?

Code: Alles auswählen

validate|customfunction|label|functionname|weitere_parameter|warning_message
Die Funktion muss so aussehen:

Code: Alles auswählen

function foo($_label, $_value, $_additional_param)
{
  // $_label: Name des XForm-Felds
  // $_value: (eingegebener) Wert des XForm-Felds
  // $_additional_param: Zusätzlicher Parameter, mit dem du z. B. das Verhalten der Funktion steuern kannst. Du kannst ihn aber natürlich auch ignorieren, wenn du ihn nicht brauchst.

  // return: true oder false bzw. wird der Rückgabewert durch ein if boolesch ausgewertet. Wenn der Wert false ist, wird die Fehlermeldung ausgegeben.
}
cukabeka hat geschrieben:Ich möchte zB prüfen, ob ein Passwort mindestens 6 Zeichen lang ist und mindestens eine Zahl und einen Großbuchstaben aufweist. Ginge das damit?
Dafür würde ich ganz einfach die preg_match-Validate-Klasse nehmen. Falls du die für eine XForm-Tabelle brauchst, einfach folgende Methode mit in die Klasse übernehmen:

Code: Alles auswählen

function getDefinitions()
{
  return array(
          'type' => 'validate',
          'name' => 'preg_match',
          'values' => array(
            array( 'type' => 'getName',       'label' => 'Name' ),
            array( 'type' => 'text',            'label' => 'Regex'),
            array( 'type' => 'text',            'label' => 'Fehlermeldung'),
          ),
          'description' => 'preg_match',
    );
}
Ansonsten kannst du in einem XForm-Formular z. B. folgende Validierung für deinen Fall nutzen:

Code: Alles auswählen

preg_match|password|~^.{6,}$~|Das Passwort muss mindestens 6 Zeichen lang sein.
preg_match|password|~^(.*\d.*[A-Z].*|.*[A-Z].*\d.*)$~|Das Passwort muss mindestens einen Großbuchstaben und eine Zahl enthalten.
LG,
Xong

[ externes Bild ] Määääääääääääääääääääääääh!

Benutzeravatar
darwin
Beiträge: 1725
Registriert: 2. Jan 2007, 17:10
Wohnort: LA

Re: Wie funktioniert XFORM-Validation "customfunction"?

2. Apr 2014, 11:03

Hi Xong,
jetzt muss ich hier auch mal nachfragen.
Es geht allerdings um xForm - Table Manager "customfunction".

Ist es mit der "customfunction" möglich beim Speichern des Datensatzes einzugreifen.
Ich würde gerne überprüfen ob eine checkbox gesetzt ist und daruf reagieren
-> z.B.
-> checkbox gesetzt JA
dann -> Copy Datensatz von Tabelle_1 in Tabelle_2
anschl. -> Delete Datensatz in Tabelle_1

Wäre das mit der "customfunction" möglich?
(und wie oder wo fügt man die func am besten im file-System ein? >> addons/xform/funcs/?)
Oder muss man einen anderen Weg gehen?

(XForm Version 4.5.1)

DANKE. grz. Chris

Benutzeravatar
darwin
Beiträge: 1725
Registriert: 2. Jan 2007, 17:10
Wohnort: LA

Re: Wie funktioniert XFORM-Validation "customfunction"?

2. Apr 2014, 15:21

HI, okay war das falsche Thema ;)
Habs mit dem EP: "XFORM_DATA_UPDATED" ... umgesetzt.

grz. Chris :roll:

Benutzeravatar
cukabeka
Beiträge: 821
Registriert: 31. Mai 2006, 00:01
Wohnort: Aschaffenburg

Re: Wie funktioniert XFORM-Validation "customfunction"?

28. Nov 2014, 15:05

Hallo,

ich wollte nochmal hier auf die customfunction zurückkommen:
Xong hat geschrieben:Hi Stefan!
cukabeka hat geschrieben:kann mir jemand erklären, wie die XFORM-Validation "customfunction" funktioniert?

Code: Alles auswählen

validate|customfunction|label|functionname|weitere_parameter|warning_message
Die Funktion muss so aussehen:

Code: Alles auswählen

function foo($_label, $_value, $_additional_param)
{
  // $_label: Name des XForm-Felds
  // $_value: (eingegebener) Wert des XForm-Felds
  // $_additional_param: Zusätzlicher Parameter, mit dem du z. B. das Verhalten der Funktion steuern kannst. Du kannst ihn aber natürlich auch ignorieren, wenn du ihn nicht brauchst.

  // return: true oder false bzw. wird der Rückgabewert durch ein if boolesch ausgewertet. Wenn der Wert false ist, wird die Fehlermeldung ausgegeben.
} 
wenn ich in der funktion einfach definiere

Code: Alles auswählen

	function validate_age ($param1,$param2,$param3,$param4) {
		return false;
	}
wirft das bei mir immer noch keinen Fehler, sondern wird einfach ignoriert. Gibt es irgendwo ein Beispiel für eine funktionierende Customfunction-Klasse?
Viele Grüße
cukabeka

Benutzeravatar
alexplus
Beiträge: 212
Registriert: 13. Feb 2007, 15:03
Wohnort: Heilbronn
Kontaktdaten: Website

Re: Wie funktioniert XFORM-Validation "customfunction"?

3. Feb 2016, 17:42

cukabeka hat geschrieben:Hallo,
wirft das bei mir immer noch keinen Fehler, sondern wird einfach ignoriert. Gibt es irgendwo ein Beispiel für eine funktionierende Customfunction-Klasse?
Jetzt war ich auch mal neugierig:

Code: Alles auswählen

function validate_test ($label,$value,$param) {
      if($value == 1) { return true; } else { return false; };
   }
Konfiguration des XForm-Feldes:

Code: Alles auswählen

Priorität ---
Name: name
Name der Funktion: validate_test
Weitere Parameter: "test"
Fehlermeldung: Überprüfen Sie Ihre Eingabe im Feld "Name"
Wenn ich nun einen neuen Tabellen-Eintrag erstelle und in das Feld "name" den Wert "1" eingebe, bekomme ich die Fehlermeldung. Wenn ich irgendwas anderes eingebe, wird gespeichert. D.h. also, "return true;" heißt, dass ein Fehler vorliegt und "return false;" heißt, dass alles in Ordnung ist. Intuitiv, hätte ich gesagt, müsste es umgekehrt sein.

Die Frage, wo diese Funktion am sinnvollsten abgelegt wird, würde sich mir auch stellen. Für R4 wird das sicher nicht passieren, aber eigentlich wäre das data-Verzeichnis da doch prädestiniert dafür. Im Moment verwende ich dafür immer das Addon addcode.

Zurück zu „Allgemeines [R4]“