[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