-
eval anpassen?
Hallo zusammen,
ich bastel gerade an einem Backendmodul, in dessen Felder ich nter anderem eine Startzeit und eine Endzeit eintragen möchte.
Ich habe folgende Felddefinition:
PHP-Code:
'von' => array
(
'label' => &$GLOBALS['TL_LANG']['tl_dienst']['von'],
'exclude' => true,
'inputType' => 'text',
'eval' => array('mandatory'=>true, 'rgxp'=>time,'tl_class'=>'w50 wizard'),
'sql' => "time"
),
'bis' => array
(
'label' => &$GLOBALS['TL_LANG']['tl_dienst']['bis'],
'exclude' => true,
'inputType' => 'text',
'eval' => array('mandatory'=>true, 'rgxp'=>time,'tl_class'=>'w50 wizard'),
'sql' => "time"
),
Jetzt habe ich hier ein Problem:
1.
"rgxp=>time" prüft auf eine 5 stellige Eingabe, was mir auch reicht, aber MySql erwartet einen 8stelligen Wert.
Kann ich hier für das Feld eine eigene Prüfung einbauen?
Wie macht man sowas?
Fragt und grüßt
Osswood
-
Moin,
hmm, am besten du postest mal deine DB Config (database.sql).
Da kann man möglicherweise was erkennen.
Was der Eintrag
PHP-Code:
'sql' => "time"
bewirken soll, ist mir allerdings nicht klar.
Grüße, Cliff
-
@cliffen:
Das ist eine SQL Angabe in der DCA statt in der database.sql, in Contao 3 möglich.
@osswood:
mysql will 8 stellen, da es auch die sekunden will. time als Feldtyp ist aber unüblich für Contao.
-
Hi,
ich könnte ja sowas machen:
PHP-Code:
'inputType' => 'text',
'eval' => array('mandatory'=>true, 'maxlength'=>8, 'rgxp'=>time,'tl_class'=>'w50 wizard'),
'sql' => "varchar(8) NOT NULL default ''00:00:00"
Dann fehlt mir aber immer noch die Möglichkeit die Einagbe zu überprüfen.
Oder kann ich da über einen save_callback noch eine Prüfung reindrehen (bin da leider noch etwas 'unbedarft' ;-)).
gruß
osswood
-
Du überprüfst sie doch schon mit:
Du kannst dir auch eigene Prüfungen mit dem addCustomRegexp Hook hinzufügen.
Hier findest du mehr dazu:
http://contao.org/de/hooks.html#addCustomRegexp
vg Joe
-
@joe
Ja ich prüfe das mit 'time', aber der lässt halt nur 5 Stellen zu, kann also nicht klappen, wenn die DB 8 haben wiil. Da wird dann nur Mist weggeschrieben.
Das mit dem Hook ist aber ein großartige Idee, das lässt sich ggf. ja auch weiter aufbohren, um weitere Felder zu verifizieren.
Danke für den Tip! (Ich bin halt noch nicht so tief in der Contao-Logik :( )
Gruß
Osswood
-
und falls jemand ma sowas braucht, um Zeitangaben zu validieren:
PHP-Code:
public function myAddCustomRegexp($strRegexp, $varValue, Widget $objWidget)
{
if ($strRegexp == 'time2')
{
if (!preg_match('/([01]?\d|2[0-3]):([01][0-9]|2[0-3])\:([0-5][0-9])/', $varValue))
{
$objWidget->addError('Field ' . $objWidget->label . ' should be a time format like 00:00:00.');
}
return true;
}
return false;
}
}
für 'rgxp'=>'time2' und fertig.
Funktioniert bestens.
Nochmal Danke und Gruß
Edit.
War ein kleiner fehler in der Regexp
Osswood