Hallo,
ich beschreibe hier, wie man z.B. Adress-Daten in einem cookie speichern und als defaultValues später wieder verwenden kann.
Datei mit den Funktionen zum Setzen und zum Auslesen des cookies anlegen.
typo3conf/ext/myExt/class.tx_myExt.php
<?php
require_once(PATH_tslib."class.tslib_pibase.php");
class tx_myExt extends tslib_pibase {
// save address data in a cookie array, that expires in 500 days
function tx_set_address_cookie(&$params, &$ref)
{
// $params['data'] = $this->get_post;
$data = $params['data'];
if( isset($data['saveaddress']) )
{
$cookiekeys = $params['config']['cookiekeys'];
$cookiekeysArray = explode(",",$cookiekeys);
foreach( $cookiekeysArray as $key )
{
if( isset($data[$key]) )
{
setcookie("address[$key]", $data[$key], time()+(3600*24*500),'/');
}
else
{
// delete cookie
setcookie("address[$key]", '', time()-86400);
}
}
} // if isset
} // function tx_set_address_cookie
function tx_get_address_cookie(&$params, &$ref)
{
/*
* preprocUserFunc is started on the very first
* but later on, there remains only $ref->conf['predef.'][$predef] Array
* so the actual plugin $predef has to be known.
*/
$t = $ref->pi_initPIflexForm();
$predef = $ref->pi_getFFvalue($ref->cObj->data['pi_flexform'], 'predefined', 'sDEFAULT');
$cookieArray = $_COOKIE["address"];
foreach( $cookieArray as $key => $value )
{
$ref->conf['predef.'][$predef]['fieldConf.'][$key.'.']['defaultValue.']['value'] = $value;
}
} // function tx_get_address_cookie
}
?>
Aufruf der Funktion um das Cookie zu setzen - per Typoscript-Setup. Im Beispiel werden nur Vorname und Nachname gespeichert und das auch nur, wenn die Checkbox mit dem Namen 'saveaddress' angeklickt war.
plugin.tx_thmailformplus_pi1.predef.myFormName {
saveUserFunc = typo3conf/ext/myExt/class.tx_myExt.php:tx_myExt->tx_set_address_cookie
saveUserFunc.cookiekeys = vorname,nachname
}
Aufruf um die Cookiedaten auszulesen und als defaultValues einzusetzen. preprocUserFunc wird ganz am Anfang von class tx_thmailformplus_pi1 gestartet. Die Funktion kann daher nicht mit einem predef-Eintrag aufgerufen werden.
plugin.tx_thmailformplus_pi1.preprocUserFunc = typo3conf/ext/myExt/class.tx_myExt.php:tx_myExt->tx_get_address_cookie
Werden die Pfade zur "Ergänzungs-Extension" relativ geschrieben werden, muss sie nicht als Extension nicht geladen sein. Die Klasse kann dann einfach so aufgerufen werden.