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/
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/
- timo.huber
- Beiträge: 305
- Registriert: 22. Dez 2009, 13:26
wie in rex_form Pflichtfeld erstellen
Hallo zusammen
ich verwende die Klasse rex_form. Es wurde mit addTextField ein Textfeld angefügt, und mit setLabel beschriftet.
Nun möchte ich ein bestimmtes Textfeld zu einem Pflichtfeld machen UND validieren (email).
Ist das Feld nicht, oder nicht korrekt ausgefüllt, soll nicht in die DB geschrieben, sondern stattdessen eine rexWarning() ausgegeben werden.
Kann mir bitte jemand auf die Sprünge helfen?
MFG
Timo
ich verwende die Klasse rex_form. Es wurde mit addTextField ein Textfeld angefügt, und mit setLabel beschriftet.
Nun möchte ich ein bestimmtes Textfeld zu einem Pflichtfeld machen UND validieren (email).
Ist das Feld nicht, oder nicht korrekt ausgefüllt, soll nicht in die DB geschrieben, sondern stattdessen eine rexWarning() ausgegeben werden.
Kann mir bitte jemand auf die Sprünge helfen?
MFG
Timo
- timo.huber
- Beiträge: 305
- Registriert: 22. Dez 2009, 13:26
- timo.huber
- Beiträge: 305
- Registriert: 22. Dez 2009, 13:26
- timo.huber
- Beiträge: 305
- Registriert: 22. Dez 2009, 13:26
- timo.huber
- Beiträge: 305
- Registriert: 22. Dez 2009, 13:26
Huhu,
ja, es gibt einen Unterschied. xform ist ja ein Formular Addon.
rex_form ist z.b. um für Addons im Backend ein Formular für die Konfiguration zur Verfügung zu stellen.
Zu finden unter
MFG
ja, es gibt einen Unterschied. xform ist ja ein Formular Addon.
rex_form ist z.b. um für Addons im Backend ein Formular für die Konfiguration zur Verfügung zu stellen.
Zu finden unter
Code: Alles auswählen
redaxo\include\classes\class.rex_form.inc.php
Ich weiß jetzt nicht ob das Problem noch aktuell ist, aber eine Möglichkeit ist den EP zu nutzen, der in der Klasse existiert:
Ich habe damit eigene Validierungen hinbekommen, und es scheint ohne Problemen beim Anlegen und Speichern zu funktionieren.
MfG
Stefan
Code: Alles auswählen
functionsname($params){
//Anweisungen/Validierungen
//Im Erfolgsfall true ausgeben
//sonst false
return true
}
$form = new rex_form('tabelle', 'fieldset', 'where');
rex_register_extension('REX_FORM_'. strtoupper($form->getName()). '_SAVE', 'functionsname');
/*...weitere Formularanweisungen...*/
MfG
Stefan
- timo.huber
- Beiträge: 305
- Registriert: 22. Dez 2009, 13:26
Re: wie in rex_form Pflichtfeld erstellen
Hi,
kann hier jemand noch ein Beispiel posten wie
es aussehen könnte... egal ob mit EP oder Class Erweiterung.
(steh da mal wieder aufm Schlauch)
Danke. grz. Chris
kann hier jemand noch ein Beispiel posten wie
es aussehen könnte... egal ob mit EP oder Class Erweiterung.
(steh da mal wieder aufm Schlauch)
Danke. grz. Chris
Re: wie in rex_form Pflichtfeld erstellen
Hab nix konkretes anzubieten, aber evtl. wär auch ne JS Validierung ein Weg.darwin hat geschrieben: wie es aussehen könnte... egal ob mit EP oder Class Erweiterung.
lg,
j.
vg, Jan
Re: wie in rex_form Pflichtfeld erstellen
Formulare sollte man mit dem viel mächtigeren und flexibleren XForm erstellen. Da gibt es dann die validate-Klassen. Außerdem kann man sich bei XForm beliebige weitere Eingabe-, Validate und Action-Klassen schreiben. Im Prinzip stehen einem keine Wünsche offen.
Re: wie in rex_form Pflichtfeld erstellen
Hey XONG,
also auch fürs Backend die xForm? ... Ich nutze die rex_form für die Backend Eingaben und die rex_list
zur Ausgabe im Backend. Mit der xForm im backend? ist das genauso einfach?... hast du evtl mal ein
beispiel Addon parat das dies aufzeigt wie, was wo... (bin ned so der Classes held *leider*) ...
hilft sicherlich noch mehr hier im Forum
DANKE.
grz. Chris
PS: "Edit me" ... hab mich noch nicht wirklich damit angefreundet...
also auch fürs Backend die xForm? ... Ich nutze die rex_form für die Backend Eingaben und die rex_list
zur Ausgabe im Backend. Mit der xForm im backend? ist das genauso einfach?... hast du evtl mal ein
beispiel Addon parat das dies aufzeigt wie, was wo... (bin ned so der Classes held *leider*) ...
hilft sicherlich noch mehr hier im Forum
DANKE.
grz. Chris
PS: "Edit me" ... hab mich noch nicht wirklich damit angefreundet...
- Mediastuttgart
- Beiträge: 282
- Registriert: 21. Mär 2005, 12:28
- Kontaktdaten: Website
Re: wie in rex_form Pflichtfeld erstellen
hallo chris,
um mit rex_form felder zu validieren, kann die klasse zum beispiel wie folgt erweitert werden
vg
michael
um mit rex_form felder zu validieren, kann die klasse zum beispiel wie folgt erweitert werden
Code: Alles auswählen
<?php
/**
* custom_rex_form Class
*
* A Class that provides Validation Functionality.
*
* This source file is subject to the MIT license that
* is bundled with this source code in the file LICENSE.
*
* PHP Version 5.2.4
*
* @category rex_form
* @package redaxo
* @author michael alexander freund <freund@mediastuttgart.de>
* @copyright Copyright (c) 2011 MEDIASTUTTGART, digitalisierte Kommunikation.
* @license http://www.opensource.org/licenses/mit-license.php
*
*/
class custom_rex_form extends rex_form {
/**
* Elements to Validate
*
* @var array
*/
protected $validationElements;
/**
* Validation Error
*
* @var array
*/
protected $validationError;
/**
* validate
*
* Override Method
*
* @param <type> $variable description
* @throws <type> $exception
* @return <type> $value
*
*/
public function validate()
{
foreach ($this->validationElements as $label => $type)
{
/**
* Fieldvalue
*/
$fieldValue = $this->elementPostValue($this->getFieldsetName(), $label);
/**
* Fieldlabel
*/
$fieldLabel = $this->getElement($this->getFieldsetName(), $label);
/**
* Validate given Field
*/
$this->validationError = $this->_validate($type, $fieldValue, $fieldLabel);
/**
* Return failed Validation Error
*/
if (isset($this->validationError))
{
return $this->validationError;
}
}
return parent::validate();
}
/**
* addValidationMethod
*
* Method to validate given Field
*
* @param <type> $variable description
* @throws <type> $exception
* @return <type> $value
*
*/
public function addValidationMethod($label, $type)
{
$this->validationElements[$label] = $type;
}
/**
* _validate
*
* Internal Validation Method
*
* @param <type> $variable description
* @throws <type> $exception
* @return <type> $value
*
*/
private function _validate($type, $fieldValue, $fieldLabel)
{
switch ($type)
{
/**
* Empty Field Validation
*/
case 'empty':
if (empty($fieldValue))
{
return 'Das Eingabefeld ' . $fieldLabel->label . ' darf nicht leer sein.';
}
break;
}
}
}
michael
MEDIASTUTTGART, digitalisierte Kommunikation.
Re: wie in rex_form Pflichtfeld erstellen
Hallo Michael,
vielen Dank für die class Erweiterung..
nur hackts gerade am Aufruf:
Fehler:
vielen Dank für die class Erweiterung..
nur hackts gerade am Aufruf:
Code: Alles auswählen
$field = & $form->addTextField('begin');
$field->setLabel($I18N_eventcal->msg("label_time"));
$form->validate('begin', 'empty');
Danke. grz. ChrisWarning: Invalid argument supplied for foreach()
Re: wie in rex_form Pflichtfeld erstellen
Habs auch mal mit deiner Klassenerweiterung probiert, Michael. Stehe irgendwie auch aufm Schlauch...
Formular hiermit erstellt:
Validierung & Anzeige:
Der Server rotzt mir aber andauernd folgende Fehlermeldung aus:
Die Klassenerweiterung wird schon richtig erkannt, aber irgendwie will er die Funktionen nicht erkennen.
Bitte um Hilfe
Danke euch,
Nico
Formular hiermit erstellt:
Code: Alles auswählen
$form = custom_rex_form::factory[...]....
Code: Alles auswählen
$form->addValidationMethod('title', 'empty'); // title vorher mit addTextField('title') erstellt.
$form->validate();
$form->show();
Code: Alles auswählen
Fatal error: Call to undefined method rex_form::addValidationMethod() in ....
Bitte um Hilfe
Danke euch,
Nico
- Mediastuttgart
- Beiträge: 282
- Registriert: 21. Mär 2005, 12:28
- Kontaktdaten: Website
Re: wie in rex_form Pflichtfeld erstellen
hallo zusammen,
die addValidationMethod steht im bezug auf die form und nicht das field
in der klasse steht momentan nur die empty validierung zur verfügung.
hier könnt ihr dann eigene cases hinzufügen.
außerdem gibts noch einen kleinen fix, falls keine validierung hinzugefügt wurde
lg
michael
die addValidationMethod steht im bezug auf die form und nicht das field
Code: Alles auswählen
$field = & $form->addTextField('title');
$field->setLabel('Titel');
//$form-> und nicht $field
$form->addValidationMethod('title', 'empty');
Code: Alles auswählen
case 'empty':
if (empty($fieldValue))
{
return 'Das Eingabefeld ' . $fieldLabel->label . ' darf nicht leer sein.';
}
Code: Alles auswählen
case 'email':
if (!preg_match('/^[A-Z0-9._%-]+@[A-Z0-9._%-]+\.[A-Z]{2,6}$/i', $fieldValue)
{
return 'Das Eingabefeld ' . $fieldLabel->label . ' ist keine E-Mail-Adresse.';
}
Code: Alles auswählen
<?php
/**
* custom_rex_form Class
*
* A Class that provides Validation Functionality.
*
* This source file is subject to the MIT license that
* is bundled with this source code in the file LICENSE.
*
* PHP Version 5.2.4
*
* @category rex_form
* @package redaxo
* @author michael alexander freund <freund@mediastuttgart.de>
* @copyright Copyright (c) 2011 MEDIASTUTTGART, digitalisierte Kommunikation.
* @license http://www.opensource.org/licenses/mit-license.php
*
*/
class custom_rex_form extends rex_form {
/**
* Elements to Validate
*
* @var array
*/
protected $validationElements;
/**
* Validation Error
*
* @var array
*/
protected $validationError;
/**
* validate
*
* Override Method
*
* @param <type> $variable description
* @throws <type> $exception
* @return <type> $value
*
*/
public function validate()
{
/**
* return true if no validations are requested
*/
if(empty($this->validationElements)) return true;
/**
* loop through validations
*/
foreach ($this->validationElements as $label => $type)
{
/**
* Fieldvalue
*/
$fieldValue = $this->elementPostValue($this->getFieldsetName(), $label);
/**
* Fieldlabel
*/
$fieldLabel = $this->getElement($this->getFieldsetName(), $label);
/**
* Validate given Field
*/
$this->validationError = $this->_validate($type, $fieldValue, $fieldLabel);
/**
* Return failed Validation Error
*/
if (isset($this->validationError))
{
return $this->validationError;
}
}
return parent::validate();
}
/**
* addValidationMethod
*
* Method to validate given Field
*
* @param <type> $variable description
* @throws <type> $exception
* @return <type> $value
*
*/
public function addValidationMethod($label, $type)
{
$this->validationElements[$label] = $type;
}
/**
* _validate
*
* Internal Validation Method
*
* @param <type> $variable description
* @throws <type> $exception
* @return <type> $value
*
*/
private function _validate($type, $fieldValue, $fieldLabel)
{
switch ($type)
{
/**
* Empty Field Validation
*/
case 'empty':
if (empty($fieldValue))
{
return 'Das Eingabefeld ' . $fieldLabel->label . ' darf nicht leer sein.';
}
break;
}
}
}
michael
MEDIASTUTTGART, digitalisierte Kommunikation.
Re: wie in rex_form Pflichtfeld erstellen
Hallo Michael,
danke für deine Hinweise, aber irgendwie komme ich nicht weiter. Die addValidationMethod habe ich ja im Bezug auf die Form angewandt (siehe den Post über dir).
Ich hab deine custom_rex_form in einer php-Datei gespeichert, und in der config.inc.php vom Addon includet.
Dann hab ich die Form-Instanz erstellt:
Danach Felder hinzugefügt etc...
Aber leider gibts den Fehler:
Viele Grüße,
Nico
danke für deine Hinweise, aber irgendwie komme ich nicht weiter. Die addValidationMethod habe ich ja im Bezug auf die Form angewandt (siehe den Post über dir).
Ich hab deine custom_rex_form in einer php-Datei gespeichert, und in der config.inc.php vom Addon includet.
Dann hab ich die Form-Instanz erstellt:
Code: Alles auswählen
$form = custom_rex_form::factory(...)
Code: Alles auswählen
$field = &$form->addTextField('title');
$field->setLabel('Titel');
$form->addValidationMethod('title', 'empty');
//$form->validate();
$form->show();
Code: Alles auswählen
Fatal error: Call to undefined method rex_form::addValidationMethod() in /Applications/MAMP/htdocs/redaxo4_3/redaxo/include/addons/testaddon/pages/form.inc.php on line 143
Nico
- Mediastuttgart
- Beiträge: 282
- Registriert: 21. Mär 2005, 12:28
- Kontaktdaten: Website
Re: wie in rex_form Pflichtfeld erstellen
poste mal deine form.inc.php
lg
michael
lg
michael
MEDIASTUTTGART, digitalisierte Kommunikation.
Re: wie in rex_form Pflichtfeld erstellen
Code: Alles auswählen
<?
$func = rex_request('func', 'string');
$id = rex_request('id', 'int');
if($func=='edit' or $func=='add') {
$form = custom_rex_form::factory($REX['TABLE_PREFIX'].'addonarticles', "Artikel", "id=".$id, 'post', $debug);
$field = &$form->addTextField('title');
$field->setLabel('Titel');
$field = &$form->addTextAreaField('newstext');
$field->setLabel('Text');
$field = &$form->addHiddenField('status');
$field->setLabel('Status');
if($func == 'edit') $form->addParam('id', $id);
$form->addValidationMethod('title', 'empty');
$form->show();
}
?>
Nico
EDIT:
Okay, Fehler gefunden... hab vergessen, in der factory die 'custom_rex_form' als letztes Argument zu übergeben. Sorry für die Umstände!
- Mediastuttgart
- Beiträge: 282
- Registriert: 21. Mär 2005, 12:28
- Kontaktdaten: Website
Re: wie in rex_form Pflichtfeld erstellen
wie meinst du als letztes argument?
MEDIASTUTTGART, digitalisierte Kommunikation.
Re: wie in rex_form Pflichtfeld erstellen
Den letzten Parameter meinte ich...
statt:
einfach:
statt:
Code: Alles auswählen
$form = custom_rex_form::factory($REX['TABLE_PREFIX'].'addonarticles', "Artikel", "id=".$id, 'post', $debug);
Code: Alles auswählen
$form = rex_form::factory($REX['TABLE_PREFIX'].'addonarticles', "Artikel", "id=".$id, 'post', $debug, 'custom_rex_form');