[TYPO3-german] formhandler: erweiterung der ajax validierung -> ausgeben der fehlermeldungen
Christopher Wirsing
christopher.wirsing at de-bit.de
Wed Oct 5 13:36:58 CEST 2011
Hier noch eine Anpassung um den kompletten Bereich der den Fehler erzeugt
mit CSS ansteuern zu können uzm Ihn zum Beispiel als Fehlerhaft zu
markieren:
/Classes/AjaxHandler/Tx_Formhandler_AjaxHandler_JQuery.php:
$url =
$this->globals->getCObj()->getTypoLink_Url($GLOBALS['TSFE']->id, $params);
+ $ok = $this->utilityFuncs->getSingle($settings['ajax.']['config.'],
'ok');
+ $errorClass =
$this->utilityFuncs->getSingle($settings['ajax.']['config.'], 'errorClass');
$markers['###validate_' . $replacedFieldname . '###'] = '
<span class="loading" id="loading_' . $replacedFieldname . '"
style="display:none">' . $loadingImg . '</span>
<span id="result_' . $replacedFieldname . '">' .
str_replace('###fieldname###', $replacedFieldname, $initial) .'</span>
<script type="text/javascript">
$(document).ready(function() {
$("*[name=\'' . $fieldname . '\']").blur(function() {
var fieldVal = escape($(this).val());
if ($(this).attr("type") == "radio" || $(this).attr("type") ==
"checkbox") {
if ($(this).attr("checked") == "") {
fieldVal = "";
}
}
$("#loading_' . $replacedFieldname . '").show();
$("#result_' . $replacedFieldname . '").hide();
var url = "' . $url . '";
url = url.replace("value=", "value=" + fieldVal);
$("#result_' . $replacedFieldname . '").load(url,
+ function(response, status, xhr) {
+ if(response == "'. $ok .'") {
+ $("#' . $replacedFieldname . '").parent().removeClass("'.
$errorClass .'");
+ } else {
+ $("#' . $replacedFieldname . '").parent().addClass("'.
$errorClass .'");
+ }
$("#loading_' . $replacedFieldname . '").hide();
$("#result_' . $replacedFieldname . '").show();
});
});
});
</script>
';
TYPOSCRIPT:
ajax {
class = Tx_Formhandler_AjaxHandler_JQuery
config {
notOk = ###error_###fieldname######
+ ok = <!-- field ok -->
+ errorClass = errorbox
initial = <!-- initial -->
loading = <!-- <img
src="typo3conf/ext/formhandler/Resources/Images/ajax-loader.gif" /> -->
}
}
Funktioniert bei mir ganz gut....
---
Mir ist ebenfalls noch aufgefallen das sich mein Formular abschicken lässt
obwohl noch Fehler drinnen sind.
Sieht so aus als greift nach der Ajax Validierung kein
Tx_Formhandler_Validator_Default sondern gleich der erste Finisher...
Ich denke mir, das ein User, der keine Javascript aktiviert hat (Gibt es
wirklich noch)... hier probleme bekommen könnte...
Mit dem Script oben wäre die selbe markierung des Fehlers möglih, als wäre
das komplette Form durch den Server validiert worden
anstatt durch einzelne AJAX aufrufe... eine Verbindung beider Funktionen
wäre optimal, d. h. das wenn Tx_Formhandler_AjaxHandler_JQuery
meldet, das das komplette Form OK ist, dann sollte bevor der Finisher dran
ist, das reguläre Tx_Formhandler_Validator_Default greifen....
Was hällst du davon?
Lieben Gruß,
Christopher
"Christopher Wirsing" <christopher.wirsing at de-bit.de> schrieb im Newsbeitrag
news:mailman.1.1317807239.13295.typo3-german at lists.typo3.org...
> OHHH man :-))))
>
> Immer wieder das selbe mir mir ^^ hehe....
> Danke geht nun.
>
> Gute Arbeit!
>
> Liebe Grüße nach Österreich.
>
> Christopher
>
>
>
>
>
> "Reinhard Führicht" <rf at typoheads.at> schrieb im Newsbeitrag
> news:mailman.1.1317806612.12309.typo3-german at lists.typo3.org...
>> Hallo Christopher,
>>
>> ich denke mal du musst einfach nur den Cache löschen. :-)
>>
>> Viele Grüße,
>> Reinhard
>>
>> Am 05.10.2011 11:09, schrieb Christopher Wirsing:
>>> Danke Reinhard, scheint in die richtige Richtung zu gehen....
>>> Nun erhalte ich beim Aufruf der per AJAX abgeschickten Anfrage an die
>>> Validierung die Meldung
>>>
>>> No valid implementation class for component
>>> "Tx_Formhandler_View_AjaxValidation" found while building the component
>>> object (Class "Tx_Formhandler_View_AjaxValidation" does not exist).
>>>
>>> ...
>>>
>>> Noch ne schnelle Idee?
>>>
>>> Lieben Gruß,
>>> Christopher
>>>
>>>
>>> "Reinhard Führicht"<rf at typoheads.at> schrieb im Newsbeitrag
>>> news:mailman.1.1317740622.29104.typo3-german at lists.typo3.org...
>>>> Hallo Christopher,
>>>>
>>>> Am 04.10.2011 15:01, schrieb Christopher Wirsing:
>>>>> hallo community...
>>>>>
>>>>> ich friemel mich derzeit durch die extension formhandler und möchte
>>>>> die
>>>>> ajax
>>>>> validierung gerne um
>>>>> die funktion erweitern, das wenn ein fehler erkannt wird, nicht nur
>>>>> der
>>>>> wert
>>>>> von
>>>>> plugin.Tx_Formhandler.settings.predef.default.ajax.config.notOK
>>>>>
>>>>> ausgegeben wird, sondern von der language datei die entsprechend
>>>>> hinterlegte
>>>>> fehlermeldung für den erkannten fehler.
>>>>> ich denke, eine erweiterung der datei
>>>>> /classes/validator/tx_formhandler_validator_ajax.php ist hier der
>>>>> richtige
>>>>> ansatz.
>>>>> hat jemand darin ehrfahrung oder kann mir irgendein code snipped
>>>>> liefern?
>>>>>
>>>>> die extension ist gut programmiert und lesbar aber ich blick net
>>>>> durch...
>>>>>
>>>>>
>>>>
>>>> es gibt dazu schon ein Ticket auf Forge inkl. Patch:
>>>>
>>>> http://forge.typo3.org/issues/30275
>>>>
>>>> Es kann sein, dass der Patch nicht in dieser Form in die Extension
>>>> eingebaut wird, aber zumindest vorübergehend sollte dir der Code
>>>> weiterhelfen.
>>>>
>>>> Viele Grüße,
>>>> Reinhard
>>>
>>>
>>
>
>
More information about the TYPO3-german
mailing list