[TYPO3-german] ext_tables.php um eigene eval-Funktion erweitern

Widmann, Manfred mpunktw at gmx.net
Fri Jan 16 09:42:53 CET 2009


Selbstverständlich hast du völlig recht, dass es nicht besonders gut ist, 
eine bestehende Extension zu verändern, weil man sich damit die Möglichkeit 
verbaut, neue Versionen der Ext. zu installieren - oder zumindest beim 
Upgrade die zusätzliche Arbeit hat, Erweiterungen auch in der neuen Version 
der Ext. nachzuziehen.

Du hast also eh schon eine eigene Ext. mit dem zusätzlichen Feld erstellt, 
bindest aber vmtl. die originale fe_user als Plugin ein, oder? Das ist eh 
schon nciht ganz sauber ...

Zwei Möglichkeiten sehe ich:
a) Du veränderst die fe_user, indem du in der php-Klasse (vmtl. 
typo3org/ext/fe_user/pi1/....php) die gewünschte Eingabeprüfung codierst. 
Schlecht daran: Du beziehst dich in einer fe_user Routine auf ein DB-Feld, 
das einer anderen Ext gehört und das Upgraden der fe_user ist aufwändiger.
b) Du bindest ab jetzt deine eigene Extension als Plugin ein - verwendest 
damit die Klasse typo3org/ext/yourclass/pi1/...php und schaffst es dort die 
fe_user so aufzurufen, dass du in deiner Extension wirklich nur den Aufruf 
der fe_user und die zusätzliche Eingabeprüfung stehen hast. DAS wäre 
natürlich ideal, ist aber auch herausfordernd ...

Oder übersehe ich was?

Die eval-Geschichte ist wirklich nur fürs Backend und hat mit dem Frontend 
nichts zu tun. Selbstverständlich kannst du aber genau diese Routine zwecks 
Vermeidung von doppeltem Code in deinem Plugin aufrufen.

lg
Manfred


"Sigrid Gramlinger" <sigrid at gramlinger.net> schrieb im Newsbeitrag 
news:mailman.1.1232052012.5696.typo3-german at lists.netfielders.de...
> Im php-Code meinst du? (sorry, falls ich blöd frage, aber das ist mein 
> erstes Typo3-Projekt) Hm, ich dachte, wenn es irgendwie geht, soll man 
> vermeiden in bestehenden Ext. was zu ändern, darum wollte ich es mit einer 
> eigenen versuchen.
>
> Du meinst ich soll die evalFunction um eine eigene Abfrage erweitern?
> Ich habe es so versucht, aber folgendes hat nicht funktioniert:
> class.tx_srfeuserregister_data.php erweitert um eine eigene case-Abfrage: 
> (--> //sgm)
> ...................
> case 'required':
> if (!trim($dataArray[$theField])) {
> $failureArr[] = $theField;
> $this->inError[$theField] = TRUE;
> $this->failureMsg[$theField][] = $this->getFailureText($theField, $theCmd, 
> 'evalErrors_required');
> }
> break;
> case 'atLeast':
> $chars = intval($cmdParts[1]);
> if (strlen($dataArray[$theField]) < $chars) {
> $failureArr[] = $theField;
> $this->inError[$theField] = TRUE;
> $this->failureMsg[$theField][] = sprintf($this->getFailureText($theField, 
> $theCmd, 'evalErrors_atleast_characters'), $chars);
> }
> break;
> //sgm
> case 'bwppass':
> $bwppassword = 'testKW';
> if ($dataArray[$theField] != $bwppassword) {
> $failureArr[] = $theField;
> $this->inError[$theField] = TRUE;
> $this->failureMsg[$theField][] = $this->getFailureText($theField, $theCmd, 
> 'evalErrors_bwppass');
> }
> break; ......................
>
> meine evalFunction "bwppass" hätte ich dann in der ext_tables.php 
> eingetragen. und den "evalErrors_bwppass" im TSSetup mit einer 
> Fehlermeldung angegeben.
> aber das hat nicht funkioniert.
>
> Meinst Du soetwas, in dieser Art?
> Danke,
> Sigrid
>
>
> Widmann, Manfred schrieb:
>> Naive Frage: Warum erweiterst/veränderst du nicht einfach das Plugin der 
>> eingebundenen Extension?
>> Manfred
>>
>> "Sigrid Gramlinger" <sigrid at gramlinger.net> schrieb im Newsbeitrag 
>> news:mailman.1.1231925580.5838.typo3-german at lists.netfielders.de...
>>> Hallo,
>>>
>>> ich habe folgendes Ziel:
>>> Bei der feuser-Registrierung (Die Ext. habe ich erfolgreich installiert 
>>> und um eigene Felder erweitert) soll ein Registrierungskennwort 
>>> abgefragt werden. Dieses erhalten nur Mitglieder der Organisation, somit 
>>> soll verhindert werden, dass sich jeder x-beliebige Internetuser 
>>> anmelden kann.
>>>
>>> ok, ich habe ein neues Feld in die Tabelle fe_user eingefügt (mit 
>>> eigener Extension und dem Kickstarter) nach dieser Anleitung:
>>> http://typo3-blog.net/blog/eval-funktion-tca-array.html
>>>
>>> codeschnipsel aus ext_tables.php:
>>> --------------------------------------
>>> "tx_bwp1_pass_register" => Array ( "exclude" => 1, "label" => 
>>> "LLL:EXT:bwp1/locallang_db.xml:fe_users.tx_bwp1_pass_register", "config" 
>>> => Array (
>>> "type" => "input", "size" => "30", "max" => "15", "eval" => 
>>> "required,tx_bwp1_mapping",
>>> )
>>> ),
>>> ---------------------------------------
>>>
>>> habe eine eigene class eingefügt
>>> datei class.tx_bwp1_mapping.php mit folgendem inhalt:
>>> ----------------------------------------
>>> <?php
>>> class tx_bwp1_mapping {
>>> function returnFieldJS() {
>>> return '
>>> return value + " [added by JS]";
>>> ';
>>> }
>>> function evaluateFieldValue($value, $is_in, &$set) {
>>> return $value.' [added by PHP]';
>>> }
>>> }
>>>
>>> if (defined('TYPO3_MODE') && 
>>> $TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/bwp1/class.tx_bwp1_mapping.php']) 
>>> {
>>> include_once($TYPO3_CONF_VARS[TYPO3_MODE]['XCLASS']['ext/bwp1/class.tx_bwp1_mapping.php']);
>>> }
>>> ?>
>>> ----------------------------------------
>>>
>>> class ist auch in ext_localconf.php eingebunden
>>>
>>>
>>> so, das Ganze funktioniert, aber nur im BE. Das bringt mir natürlich 
>>> herzlich wenig. Was muss ich tun, damit das auch im FE funktioniert?
>>>
>>> Oder soll ich das Thema komplett anders angehen?
>>> Danke für Tipps!!!
>>>
>>> Sigrid
>>
>>
> 




More information about the TYPO3-german mailing list