[TYPO3-german] Formhandler Problem mit insertIfNoUpdatePossible
Susanne
sw1977 at online.de
Fri Jun 7 15:49:51 CEST 2013
Hallo Reinhard,
das funktioniert super! Vielen Dank nochmal!
Gruß
Susanne
Am 07.06.2013 10:24, schrieb Reinhard Führicht:
> Hallo Susanne,
>
> ich fürchte der Patch hatte einen Bug. :-)
>
> Es fehlt die Übergabe von $andWhere and die Methode "doesRecordExist".
>
> Bitte versuch mal diese Änderungen in der Methode "init"
>
> Index: Classes/Finisher/Tx_Formhandler_Finisher_DB.php
> ===================================================================
> --- Classes/Finisher/Tx_Formhandler_Finisher_DB.php (revision 76269)
> +++ Classes/Finisher/Tx_Formhandler_Finisher_DB.php (working copy)
> @@ -270,7 +270,8 @@
> //check if uid of record to update is in GP
> $uid = $this->getUpdateUid();
>
> - $recordExists = $this->doesRecordExist($uid);
> + $andWhere =
> $this->utilityFuncs->getSingle($this->settings, 'andWhere');
> + $recordExists = $this->doesRecordExist($uid, $andWhere);
> if ($recordExists) {
> $this->doUpdate = TRUE;
> }
> elseif(intval($this->utilityFuncs->getSingle($this->settings,
> 'insertIfNoUpdatePossible')) !== 1) {
>
> Viele Grüße,
> Reinhard
>
> Am 06.06.2013 23:49, schrieb Susanne:
>> Hallo Reinhard,
>>
>> vielen Dank für den Tip, ich habe ihn sofort ausprobiert. Leider ohne
>> Erfolg, es gibt immer noch den gleichen Effekt wie ich unter "Fall 3"
>> beschrieben habe.
>> debug=1 zeigt mir, dass nach wie vor ein UPDATE versucht wird.
>>
>> Als würde andWhere immer noch nicht berücksichtigt bei der Abfrage, ob
>> der Datensatz existiert.
>> Seitencache- und Konfigurationscache habe ich geleert. Oder gibt es noch
>> irgendwelche temp-, cache- oder ähnliche Dateien die ich löschen muss?
>>
>> Hast du vielleicht noch eine Idee, woran der Fehler liegen könnte?
>>
>> Vielen Dank auf jeden Fall schonmal für deine Hilfe und auf diesem Wege
>> auch für die tolle Extension!
>>
>> Gruß
>> Susanne
>>
>>
>> Am 06.06.2013 09:45, schrieb Reinhard Führicht:
>>> Hallo Susanne
>>>
>>> Am 05.06.2013 23:36, schrieb Susanne:
>>>> Hallo,
>>>>
>>>> ich habe folgendes Problem:
>>>> Mit Hilfe von Formhandler werden neue Einträge in die Tabelle Pages
>>>> geschrieben, in verschiedene pid?s.
>>>> Entscheidend ist der title der neuen Seite, daher habe ich key = title
>>>> gesetzt und generiere key_value dynamisch aus der Eingabe im Formular.
>>>> Innerhalb jeder pid darf der Seitentitle nur einmal vorkommen. Ist er
>>>> schon vorhanden, soll der bestehende Eintrag nur überschrieben werden
>>>> und ein neues cr_date erhalten.
>>>> Die pid, in der der aktuelle Eintrag geschrieben werden soll, wird
>>>> ebenfalls dynamisch generiert und ist sowohl als andWhere-Bedingung
>>>> als
>>>> auch im pid.mapping angegeben.
>>>>
>>>> Ich nutze den Finisher_DB mit einer Kombination aus
>>>> .updateInsteadOfInsert = 1 und insertIfNoUpdatePossible = 1
>>>>
>>>> * Fall1: Eine Seite mit dem gewählten Title existiert schon in der
>>>> entsprechenden PID: Das Update wird Problemlos ausgeführt
>>>> * Fall2: Eine Seite mit dem gewählten Title existiert im kompletten
>>>> Seitenbaum noch nicht: Insert wird innerhalb der entsprechenden
>>>> PID
>>>> richtig ausgeführt, alles funktioniert wie es soll
>>>> * Fall3: Eine Seite mit dem gewählten Title existiert bereits im
>>>> Seitenbaum, aber nicht in der in der andWhere-bedingung
>>>> vorgegebenen
>>>> PID. Dies führt zu folgendem Fehler:
>>>> Formhandler führt hier ein UPDATE statt einem INSERT aus. Ein
>>>> Update
>>>> ist aber nicht möglich, da die Seite in der pid aus der
>>>> andWhere-Bedingung nicht vorkommt. Die Folge: Die Seite wird nicht
>>>> geschrieben.
>>>>
>>>> Ich habe schon versucht, disableUpdateUidFallback = 1 zu setzen.
>>>> Leider
>>>> ohne Erfolg.
>>>>
>>>> Hat jemand eine Idee, wie ich dieses Problem lösen kann?
>>>>
>>>> Schon einmal vielen Dank!
>>>>
>>>> Gruß
>>>> Susanne
>>>>
>>>>
>>>
>>> Kann es sein, dass es an diesem Bug liegt? [1]
>>>
>>> Bis zur Version 1.6.0 hängt Finisher_DB das andWhere nicht an die
>>> Abfrage ob der Datensatz bereits existiert.
>>>
>>> Der Patch hier [2] sollte das beheben.
>>>
>>> Viele Grüße,
>>> Reinhard
>>>
>>> [1] http://forge.typo3.org/issues/46502
>>> [2]
>>> http://forge.typo3.org/projects/extension-formhandler/repository/revisions/75391/diff/trunk/Classes/Finisher/Tx_Formhandler_Finisher_DB.php
>>>
>>>
>>>
>>
>
>
More information about the TYPO3-german
mailing list