So seid nun Gottes Nachfolger als die lieben Kinder
Epheser 5:1
autor | |
8-05-14 14:56:46 | Fehlermeldung |
Christian M |
Hallo, ich benutze TYPO3 4.7.15 mit ttproducts 2.7.8 und allen nötigen Extensions in aktuelle Version. PHP ebenfalls aktuellste Stable Version. Ich bekomme beim Aufruf meines Shops (Produktliste) folgende Fehlermeldung angezeigt: Warning: Illegal string offset 'name' in /var/www/web256/html/meineseite.de/typo3conf/ext/tt_products/view/class.tx_ttproducts_info_view.php on line 301 In Zeile 301 fragt er irgendetwas mit delivery & billing ab. Die Sachen benutze ich jedoch gar nicht und sie sind auch nicht in meinem Template enthalten. |
8-05-14 16:02:47 | PHP |
Franz Holzinger |
Welche PHP Version ist im Einsatz? requiredInfoFields enthält 'name', oder? --------------- if (trim($this->infoArray['billing'][$fName]) == '' || ($type != 'billing') && trim($this->infoArray['delivery'][$fName]) == '' && $bBillingTo) { -------------------- Am besten diese Debug Anweisung eine Zeile vorher einfügen und das Ergebnis mitteilen (z.B. über die Extension fh_debug). debug ($this->infoArray['billing'], '$this->infoArray[\'billing\']'); debug ($infoFields, '$infoFields'); |
8-05-14 17:28:00 | Antwort |
Christian M |
PHP Version 5.4.8 requiredInfoFields finde ich wo? |
8-05-14 19:13:07 | Setup |
Franz Holzinger |
requiredInfoFields = name, address, telephone, email Am besten sollte diese Debug Anweisung eingefügt werden: debug ($this->infoArray, '$this->infoArray'); |
8-05-14 19:55:13 | Felder |
Christian M |
Wo genau finde ich diese felder? |
8-05-14 20:24:37 | Typoscript Setup |
Franz Holzinger |
Das ist Bestandteil des Typoscript Setups für tt_products. Die Feldnamen stammen aus der Datenbank Tabelle fe_users. |
9-05-14 10:34:20 | Debugging |
Christian M |
Mit dem Debug Code: "if (trim($this->infoArray['billing'][$fName]) == '' || ($type != 'billing') && trim($this->infoArray['delivery'][$fName]) == '' && $bBillingTo) {}" (Die Andere Debug anweisung erwirkt gar nichts) kommt nur eine zweite Fehlermeldung: "Warning: Illegal string offset 'email' in /var/www/web256/html/meineseite.de/typo3conf/ext/tt_products/view/class.tx_ttproducts_info_view.php on line 300 Warning: Illegal string offset 'name' in /var/www/web256/html/meineseite.de/typo3conf/ext/tt_products/view/class.tx_ttproducts_info_view.php on line 302" im TS steht folgendes: plugin.tt_products { templateFile = fileadmin/templates/tt_products/products_de.html pid_list = 207 wrapInBaseClass = 0 debug = 1 requiredInfoFields = name, address, telephone, email separateImage = 1 } Und in den Constanten: ## tt_products Constants plugin.tt_products.pid_list = 207 plugin.tt_products.PIDitemDisplay = 287 plugin.tt_products.PIDlistDisplay = 287 plugin.tt_products.orderByItemNumberSg = 0 plugin.tt_products.orderEmail_order2 = 0 plugin.tt_products.showNotinStock = 0 plugin.tt_products.displayCurrentRecord = 1 plugin.tt_products.clickIntoBasket = 1 plugin.tt_products.separateImage = 1 plugin.tt_products.PIDagb = 7 plugin.tt_products.PIDbasket = 292 plugin.tt_products.PIDfinalize = 294 plugin.tt_products.file.templateFile = fieleadmin/templates/tt_products/products_de.html plugin.tt_products.color1 = #CCCCCC plugin.tt_products.editLockedLoginInfo = 0 plugin.tt_products.debug = 0 plugin.tt_products.ajaxDebug = 0 plugin.tt_products.getDiscountPrice = 0 plugin.tt_products.quantityIsFloat = 0 plugin.tt_products.clickIntoList = 0 plugin.tt_products.clickItemsIntoSubmenu = 0 plugin.tt_products.alwaysAdvanceOrderNumber = 0 plugin.tt_products.usePageContentImage = 0 plugin.tt_products.NoSingleViewOnList = 0 plugin.tt_products.loginUserInfoAddress = 0 plugin.tt_products.PIDbilling = 296 |
9-05-14 11:54:24 | Debug Ausgabe |
Franz Holzinger |
Wo ist nun die Debug Ausgabe? Womit ist diese erstellt worden? Änderungsvorschlag: Das gesamte 2. Foreach der "function checkRequire" ersetzen durch: --------------------------- foreach($infoFields as $k => $fName) { if ( ( is_array($this->infoArray['billing']) && trim($this->infoArray['billing'][$fName]) == '' ) || ( $type != 'billing' && $bBillingTo && is_array($this->infoArray['delivery']) && trim($this->infoArray['delivery'][$fName]) == '' ) ) { $rc = $fName; break; } } |
9-05-14 12:46:38 | Debugger |
Christian M |
Die änderung verschiebt den Fehler nur im PHP Warning: Illegal string offset 'name' in /.../typo3conf/ext/tt_products/view/class.tx_ttproducts_info_view.php on line 239 if (!trim($this->infoArray['delivery'][$field])) { $bMissingField = TRUE; break; } } Die aktuelle Debug extension fh_debug (0.4.0-0.5.0) ist in Verbindung mit der Typo3 version 4.7.15 nicht kompatibel. Die fh_debug (0.3.6) unterstützt leider nicht die PHP Version 5.4.8. Gibt es eine andere extension gibt die gut zum Debuggen ist? |
9-05-14 14:30:22 | Korrektur |
Franz Holzinger |
An obiger Stelle muss dieselbe Änderung gemacht werden: ------- if (!$this->bDeliveryAddress) { foreach ($requiredInfoFieldArray as $field) { if ( isset($this->infoArray['delivery']) && !trim($this->infoArray['delivery'][$field]) ) { $bMissingField = TRUE; break; } } } ---------- Ggf. muss auch in fh_debug eine is_array Prüfung an denjenigen Stellen eingebaut werden, an welchen es zu error_log Einträgen kommt. Es gibt mehrere Debug Extensions im TYPO3 TER. Ich habe diese aber seit Jahren nicht mehr verwendet. |
9-05-14 14:31:35 | is_array |
Franz Holzinger |
Korrektur zu oben (is_array muss verwendet werden): if (!$this->bDeliveryAddress) { foreach ($requiredInfoFieldArray as $field) { if ( is_array($this->infoArray['delivery']) && !trim($this->infoArray['delivery'][$field]) ) { $bMissingField = TRUE; break; } } } |
9-05-14 14:49:19 | function init |
Franz Holzinger |
Hier kommt eine Lösung, die nur hinter der init Funktion der Datei view/class.tx_ttproducts_info_view.php gemacht werden muss. Damit werden die vorherigen Änderungen überflüssig. $this->infoArray = array(); if (isset($formerBasket) && is_array($formerBasket)) { $this->infoArray['billing'] = $formerBasket['personinfo']; $this->infoArray['delivery'] = $formerBasket['delivery']; } if (!$this->infoArray['billing']) { $this->infoArray['billing'] = array(); } if (!$this->infoArray['delivery']) { $this->infoArray['delivery'] = array(); } |
9-05-14 15:03:46 | is_array |
Daniel Pfisterer |
Hallo Franz, ich habe den selben fehler der mir bei jedem Seitenaufruf einen Datenbank eintrag in das syslog ("sys_log") schreibt. Die fehlermeldung sieht wie folgt aus. Core: Error handler (FE): PHP Warning: Illegal string offset 'name' in /.../.../typo3conf/ext/tt_products/view/class.tx_ttproducts_info_view.php line 301 - Typo3 6.1.7 - PHP 5.4.9 - tt_products 2.7.8 - div2007 1.1.4 - table 0.3.0 ich ersetze also in Zeile 301 mit: ________________________________ foreach($infoFields as $k => $fName) { if ( ( is_array($this->infoArray['billing']) && trim($this->infoArray['billing'][$fName]) == '' ) || ( $type != 'billing' && $bBillingTo && is_array($this->infoArray['delivery']) && trim($this->infoArray['delivery'][$fName]) == '' ) ) { $rc = $fName; break; } } und Zeile 237 mit: _________________________ if (!$this->bDeliveryAddress) { foreach ($requiredInfoFieldArray as $field) { if ( is_array($this->infoArray['delivery']) && !trim($this->infoArray['delivery'][$field]) ) { $bMissingField = TRUE; break; } } } soll ich das ganze nochmal Debuggen? Ganz liebe Grüße |
9-05-14 15:41:28 | function init |
Daniel Pfisterer |
Habe das in die function init eingefügt (einmal Zeile 71 und Zeile 202) und bekomme weiterhin die selbe fehlermeldung. ______________________________ $this->infoArray = array(); if (isset($formerBasket) && is_array($formerBasket)) { $this->infoArray['billing'] = $formerBasket['personinfo']; $this->infoArray['delivery'] = $formerBasket['delivery']; } if (!$this->infoArray['billing']) { $this->infoArray['billing'] = array(); } if (!$this->infoArray['delivery']) { $this->infoArray['delivery'] = array(); } Die zuvor Vorgeschlagene lösung behebt den PHP Fehler. |
31-10-16 20:36:43 | Fehlerhafter "zurück zur Liste Button" |
Luca Calmonte |
Hallo Zusammen, ich habe einen Produktkatalog mit tt_products angelegt. Nun habe ich jedoch ein Problem mit der Einzelansicht. Wenn ich beim ersten Mal von der Kategorienansicht in die Einzelansicht welche, so funktioniert dies perfekt. Gehe ich dann nochmals in die Einzelansicht eines Produktes und will wieder zurück zur Liste gibt mir tt_products folgende Fehlermeldung an: Produkte: Falscher Parameter. GET/POST var 'tt_products[product]' wurde nicht angegeben oder kein Element mit uid = 0 auf den erlaubten Seiten (2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,21,22,23,24,29,30,31,32,33,34,35,36,37,38,39,40,45,46,47,49,50,51,52,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74) gefunden Anstelle der Kategorie Seite sehe ich im URL, dass dort die falsche Seite ausgewählt wird. Anstelle von: /de/produkte2/kategorie/?tt_products%5BbackPID%5D=50&tt_products%5Bcat%5D=13&cHash=df2f8e7dd5520787abe2a3035eea8d05 wird nun: /de/produkte2/detail/?tt_products%5BbackPID%5D=50&tt_products%5Bcat%5D=13&cHash=df2f8e7dd5520787abe2a3035eea8d05 angegeben. Somit sieht es aus als würde nicht die korrekte Seite "/de/produkte2/kategorie/...@ aufgerufen. Habe mich versucht irgendwie da durch zu kämpfen aber leider nichts gefunden. Kann mir da jemand helfen ? Vielen Dank. |
31-10-16 21:41:29 | falscher Link |
Franz Holzinger |
Beim letzten Link ist der Parameter 'tt_products[product]' verloren gegangen, deshalb wird ein Produkt mit uid=0 angenommen, das es aber gar nicht geben kann. Es fehlt etwas in diesem Format: &tt_products%5Bproduct%5D=25 Untersuche nun, von wo aus in die Produkte Einzelansicht verlinkt worden ist. Das muss nur einen URL-Marker geschehen sein, der über ein Produkt in der Listenansicht in die Einzelansicht zeigt. In welcher tt_products Version tritt das auf? |
8-11-16 06:44:44 | Fehlerhafter "zurück zur Liste Button" |
Luca |
Hallo Franz, vielen Dank für dein rasches Feedback Bei mir ist tt_products in der Version 2.8.10 im Einsatz. Ich starte wei folgt: - Lokomotiven (auswahlseite der Kategorien) - Link zu Kategorie Seite -> http://www.hag.ch/de/produkte2/kategorie/?tt_products%5Bcat%5D=13&cHash=cc9b8915a83342f414af2a7786751b76 - Nun wird eine Liste der Artikel der jeweiligen Kategorie angezeigt. - Link zum Detail --> http://www.hag.ch/de/produkte2/detail/?tt_products%5Bcat%5D=13&tt_products%5Bproduct%5D=1&cHash=a622327749ee06c3c78e282006ec40c5 - Detailseite wird korrekt angezeigt, Navigation weiter und zurück funktioniert ebenfalls perfekt - Zurück zur Liste ->http://www.hag.ch/de/produkte2/kategorie/?tt_products%5BbackPID%5D=50&tt_products%5Bcat%5D=13&cHash=df2f8e7dd5520787abe2a3035eea8d05 - Seite mit den Produkten je Kategorie wird korrekt angezeigt - Link in gleiches Produkt -> http://www.hag.ch/de/produkte2/detail/?tt_products%5BbackPID%5D=50&tt_products%5Bcat%5D=13&tt_products%5Bproduct%5D=1&cHash=101792cc97fb91aee4b5c626ba3dbb4e - Zurück zur Liste -> http://www.hag.ch/de/produkte2/detail/?tt_products%5BbackPID%5D=50&tt_products%5Bcat%5D=13&cHash=df2f8e7dd5520787abe2a3035eea8d05 Was mich sehr irritiert ist, dass beim ersten Aufruf der Link funktioniert und erst beim zweiten Besuch der Link nicht mehr funktioniert. Ich kann mir aber nicht erklären aus welchem Grund Die Seite ist wei folgt aufgebaut: - Produkte (Auswahl der einzelnen Produktgruppen - ohne tt_products) -- Lokomotiven (Kategorieansicht nur der Lokomotiven) -- Personenwagen (Kategorieansicht nur der Personenwagen) -- Güterwagen (Kategorieansicht nur der Güterwagen) - Kategorie (alle Produkte der jeweiligen Kategorie) - Detail (Einzelansicht der Produkte) Einstellungen: - Standardmässig, keine Änderung vorgenommen Konstanten: plugin.tt_products.PIDlistDisplay = 63 (Kategorieansicht) plugin.tt_products.PIDitemDisplay = 50 (Einzelansicht) plugin.tt_products.maxW_listRoot = 800 plugin.tt_products.debug = 0 plugin.tt_products.test = 815 plugin.tt_products.maxW_listHasChilds = 700 plugin.tt_products.maxW_listcat = 700 plugin.tt_products.maxW_list = 700 plugin.tt_products.maxW_basket = 200 plugin.tt_products.maxH_listRoot = 300 plugin.tt_products.maxH_listcat = 400 plugin.tt_products.maxH_list = 400 plugin.tt_products.maxH_listHasChilds = 400 plugin.tt_products.clickEnlarge_listHasChilds = 0 plugin.tt_products.clickEnlarge_basket = 0 plugin.tt_products.clickEnlarge_list = 0 plugin.tt_products.maxW_single = 1200 plugin.tt_products.maxW_popup = 1600 Habe versucht die andere Extension mbi_products_categories (Version 0.1.4) in das ganze einzubinden, wenn ich diese aktiviere dann killt es mir dias Typo 3 komplett (aktuell Typo3 7.6.9 Migration auf 7.6.12) in Arbeit) |
8-11-16 06:49:26 | Fehlerhafter "zurück zur Liste Button" |
Luca |
Anbei noch die Aufstellung der Sys Ordner - Kategorien -- Lokomotiven --- Enthält z.B. Kategorie Re 460 -- Personenwagen -- Güterwagen - Produkte -- Lokomotiven --- Re 460 ---- Enthält alle Produkte welche der Kategorie Re 460 zugeordnet sind. -- Personenwagen -- Güterwagen |
8-11-16 21:36:19 | 2.8.13 |
Franz Holzinger |
Das tt_products muss zuerst auf 2.8.13 aktualisiert werden. Vielleicht ist der Fehler inzwischen schon behoben. https://github.com/franzholz/tt_products/releases/tag/Version-2-8-13 |
9-11-16 12:12:26 | Fehlerhafter "zurück zur Liste Button" |
Luca |
Besten Dank für die Info, ich habe tt_products aktualisiert. Leider habe ich diesen Fehler immer noch Beim ersten Aufruf funktioniert der Link, ab dem zweiten dann nicht mehr |
21-12-16 21:33:31 | Fehlerhafter "zurück zur Liste Button" |
Luca |
Also, ich habe nochmals alles geprüft und auf den Kopf gestellt. Ich kann diesen Fehler nur verhindern, wenn ich für jede Kategorie eine Seite mit den jeweiligen Artikeln und anschliessend den dazugehörigen Detailseiten erstelle. Auf allen Seiten muss ein Ext Template angegeben werden In jedem dieser Templates gebe ich die Seiten ID an und schon funktioniert dies mit den Links wieder. Aus welchem Grund es bislang nicht funktioniert hat, habe ich nach wie vor nicht herausgefunden. |
23-12-16 14:44:21 | nicht reproduzierbar |
Franz Holzinger |
Ich kann dieses Verhalten mit der tt_products 2.8.13 aus dem Github nicht reproduzieren. Wegen Realurl ist es schwer festzustellen, welche Page-Id die Produktliste hat. Es wird immer der backPID Parameter übergeben. Das ist die Seiten-Id, wohin der Link zurück führen muss. Offensichtlich wird einmal eine falsche Seiten-Id für den backPID Parameter übergeben. Aber wo tritt das auf? Dort wäre der Fehler zu suchen. Doch im PHP Code für bei backPID immer die gerade aktuelle Seiten Id eingetragen. Also kann es diesen Fehler eigentlich nicht geben. Am besten noch Realurl abschalten und das herausfinden. |
< Zurück zum Forum |