rtgx

EXT sr_feuser_register a užívateľská validácia vstupov

Ešte než začnem so samotným sr_feuser_register hook-om, predvediem jednoduchšiu možnosť validácie vstupov registračného formulára pomocou regulárneho výrazu len použitím typoscriptu (uvedený reg. výraz povoľuje abecedné znaky a čísla, počet 5):

plugin.tx_srfeuserregister_pi1 {
create.evalValues {
cnum = preg[/^[a-zA-Y0-9]{5}$/]
}
}

Nižšie popisovaný hook umožňuje plne užívateľskú validáciu všetkých vstupov z registračného formulára extensionu sr_feuser_register.

ext_localconf.php

$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['sr_feuser_register']['tx_srfeuserregister_pi1']['model'][] =
'EXT:rtg5gram/hooks/class.tx_srfeuserregister_evalFunc.php:&tx_srfeuserregister_evalFunc';

Typoscript setup

V registračnom formulári máme položku cnum, ktorú potrebujeme kontrolovať. Preto v TS setup nastavíme validáciu na hook (pre create aj pre edit). V jazykovom poli missing_cnum si pripravíme chybové hlásenia, ktoré budeme zobrazovať v prípade, že vstupná hodnota cnum nebude zodpovedať požadovaným hodnotám.

plugin.tx_srfeuserregister_pi1 {
create.evalValues {
cnum = hook
}
edit.evalValues {
cnum = hook
}
}

plugin.tx_srfeuserregister_pi1._LOCAL_LANG {
en.missing_cnum = Customer value is required field!
sk.missing_cnum = Prosím, napíšte Vaše číslo!
en.evalErrors_preg_cnum = Batch number is not valid.
sk.evalErrors_preg_cnum = Číslo šarže nie je platné.
}

class.tx_srfeuserregister_evalFunc.php

Funkcia tx_srfeuserregister_evalFunc::evalValues zabezpečí samotnú validáciu cnum. Ak by niekoho zaujímalo, v čom spočíva kontrola: podľa aktuálneho jazyka sa vyberie subpole $check, v ktorom sa hľadá zadaná hodnota, ak sa nenájde zobrazí sa chybové hlásenie.

/**
* Hook handler for eval_func for extension Front End User Registration (sr_feuser_register)
*
* @author Robert Gonda
*/
class tx_srfeuserregister_evalFunc {

vAr $check = array(
1 => array( // SK
'EC0112B',
'EE0082D',
'ED0216D',
'ED0276C',
'BD3303A',
),
3 => array( // HU
'EC0244A',
'ED0208A',
'BD2679A',
'BD4448A',
'BD4447A',
),
);

function evalValues( $theTable, $dataArray, $origArray, $markContentArray, $cmdKey, $requiredArray, $theField, $cmdParts, $invokingObj ) {

// Default return value - if an empty string is returned no error is given for this field in class.tx_srfeuserregister_data.php
$theField = '';
// Reference to the invoking Object
$plugin = &$invokingObj;
// Get value
$cnum = $dataArray['cnum'];

// Check cnum value
if( !in_array( $cnum, $this->check[$GLOBALS['TSFE']->sys_language_uid] ) ) {
// theField is in error
$theField = 'cnum';
$theCmd = 'user_cnum_check';
$plugin->inError[$theField] = TRUE;
// Get the error description from the TS template
$plugin->failureMsg[$theField][] = $plugin->getFailureText( $theField, $theCmd , 'evalErrors_preg_cnum' );
}
// Return the field in error
return $theField;
}
}

if (defined('TYPO3_MODE') && $GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['ext/sr_feuser_register/hooks/class.tx_srfeuserregister_evalFunc.php']) {
include_once($GLOBALS['TYPO3_CONF_VARS'][TYPO3_MODE]['XCLASS']['ext/sr_feuser_register/hooks/class.tx_srfeuserregister_evalFunc.php']);
}