[TYPO3-german] Formhandler Problem mit insertIfNoUpdatePossible

Reinhard Führicht fuehricht at gmx.at
Fri Jun 7 10:24:09 CEST 2013


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
>>
>>
>


-- 
--------------------------------
http://www.typo3-formhandler.com
--------------------------------


More information about the TYPO3-german mailing list