Closed green-pixelbox closed 2 years ago
@green-pixelbox Hast du schon die aktuellste Version installiert (mit unserem subcolums-fork)? Bitte immer Contao-, Bundle- und PHP-Version angeben.
Ja, hat er:
/srv/www/hof-keppel/public/contao49/vendor/heimrichhannot/subcolumns/elements/colsetStart.php:157
Das Problem ist aber nicht in diesem Bundle (contao-subcolumns-bootstrap-bundle), sondern in heimrichhannot/subcolumns.
Der Fehler deutet eher darauf hin, dass in den Settings noch kein Columnset ausgewählt wurde. Daher ist dann sets in dem Array null was zu dem Fehler führt.
oh sorry. Hier die Daten: Contao 4.12.6, Modulversion: 1.9.0. In PHP 7.4 läuft alles super wie immer, nur in PHP 8 bekomme ich die Fehlermeldung.
@Defcon0 Ah, nicht richtig geschaut. Könnte man in so einem Fall nicht eine klare Exception werfen?
legacy-code von felixpfeiffer... ;-)
Ich kann es abfangen, aber wenn es in 7.4 ging, liegt es nicht daran, dass in den settings nichts eingetragen wurde.
@green-pixelbox Hast du in den Contao-Einstellungen ein Columnset (Bootstrap 4, 5 usw.) ausgewählt?
ja bootstrap 4
Seltsam. Ist am entsprechenden Content Element definitiv in den Feldern strSet
und sc_type
etwas eingetragen?
https://github.com/heimrichhannot/contao-subcolumns/blob/master/elements/colsetStart.php#L157
Die Container-Variable wäre nur dann null, wenn er da nix findet:
https://github.com/heimrichhannot/contao-subcolumns/blob/master/elements/colsetStart.php#L121 https://github.com/heimrichhannot/contao-subcolumns/blob/master/elements/colsetStart.php#L52
also ich teste grad fleissig. Es ist nun so. wenn ich eine frische contao installation 4.12 nehme und das modul installiere, mit PHP 8, funktioniert es nun doch gut, es gibt keine fehlermeldung. es ist in meinem fall so, das ich daten aus einer alten contao version migriert habe, dort war noch das Spaltenset YAML 4 drin, damit wurde gearbeitet in der alten seite. wenn ich nun auf bootrap 4 umschalte und ich gehe in den artikel, dann kommt folgende fehlermeldung, wenn ich PHP 8 verwende. Wenn ich PHP 7.4 verwende, kommt die fehlermeldung nicht. Fehlermeldung: [2022-02-16T14:36:33.081298+01:00] request.INFO: Matched route "contao_backend". {"route":"contao_backend","route_parameters":{"_route":"contao_backend","_scope":"backend","_token_check":true,"_controller":"Contao\CoreBundle\Controller\BackendController::mainAction"},"request_uri":"https://hof-keppel.gp-serverpower.de/contao?do=article&id=92&ref=sdHJ0cwt&rt=314a6e8ed9b4310a7ab41afb7.WCrR_FiVH8QUVyo33usIfrcXA94on-cHPouy09qADwY.D0LmvizeLYUtIWQB745yNM1TNZ9jzaZUX93nkJzLPSsOHriyDuJxo2EgZw&table=tl_content","method":"GET"} [] [2022-02-16T14:36:33.122164+01:00] request.CRITICAL: Uncaught PHP Exception TypeError: "count(): Argument #1 ($value) must be of type Countable|array, null given" at /srv/www/hof-keppel/public/contao49/vendor/heimrichhannot/contao-subcolumns-bootstrap-bundle/src/Element/ColsetPart.php line 50 {"exception":"[object] (TypeError(code: 0): count(): Argument #1 ($value) must be of type Countable|array, null given at /srv/www/hof-keppel/public/contao49/vendor/heimrichhannot/contao-subcolumns-bootstrap-bundle/src/Element/ColsetPart.php:50)"} []
Naja, es kommt in php7.4 zwar keine fehlermeldung, aber 100%ig fehlerfrei läuft es dann nicht, weil dort einfach die variable nicht null sein dürfte. Warum es dort null ist, ist schwer zu beantworten per remote.
Ich baue mal einen Check darauf ein, dann wird der Fehler zumindest nicht in der Form geworfen.
super danke euch!
Lass dir bitte mal das hier in Zeile 112 in /srv/www/hof-keppel/public/contao49/vendor/heimrichhannot/subcolumns/elements/colsetStart.php ausgeben:
echo '<pre>';
var_dump($this->strSet);
var_dump($this->sc_type);
echo '</pre>';
die();
hier die Ausgabe bei einer Seite, wo vorher YAML 4 Standard verwendet wurde: string(9) "boostrap4" string(0) ""
Da haben wir es ;-) Der Fehler ist, dass sc_type leer ist. Das darf im Kontext unseres Bundles nicht sein. Dort wählst du aus, welches Columnset, was du im Backend unter Spaltensets (-> tl_columnset) angelegt hast, verwenden willst. Hast du Columnsets angelegt? Falls ja, musst du diese entsprechend abbilden und migrieren.
ja columnsets habe ich eins angelegt.
Wie sah denn die Situation in deiner alten Instanz (YAML4) aus? Da gab es, so wie ich dich verstehe, keine tl_columnset-Instanzen, also im Backend angelegte Columnsets, richtig?
ja richtig. in yaml 4 gab es keine columnsets
Dann wird es schwierig. Du musst aus den alten Datenbank-Datensätzen herausfinden, welches konkrete Spaltenset genutzt wurde (in welchem Feld das genau war, müsstest du bitte in tl_content mal schauen). Dann musst du alle Spaltensets, die es damals gab, als Spaltensets im Backend anlegen und die alten Spaltensetzuordnungen in die neuen Spaltensets aus dem Backend (IDs) abbilden. Dann geht es wieder. Ist also eine klassische Migration, kein Fehler im Bundle.
okay danke für den hinweis. ich werde einfach auf php 7.4 die alten yaml spaltensets im backend rausschmeissen und dann umstellen auf bootstrap 4 und php 8. dann funktioniert es ja. danke nochmal für den super schnellen einsatz :)
👍
Ersteinmal Danke für das super Modul. Nur als Hinweis, in PHP 8 gibt es eine Fehlermeldung, da funktioniert das MOdul noch nicht. Hier die Fehlermeldung: [2022-02-16T14:19:37.635851+01:00] request.INFO: Matched route "tl_page.2.root". {"route":"tl_page.2.root","route_parameters":{"_token_check":true,"_controller":"Contao\FrontendIndex::renderPage","_scope":"frontend","_locale":"de","_format":"html","_canonical_route":"tl_page.2","parameters":"","pageModel":{"Contao\PageModel":[]},"_route":"tl_page.2.root","_route_object":{"Symfony\Component\Routing\Route":[]}},"request_uri":"https://hof-keppel.gp-serverpower.de/","method":"GET"} [] [2022-02-16T14:19:37.638183+01:00] security.INFO: Populated the TokenStorage with an anonymous Token. [] [] [2022-02-16T14:19:37.658197+01:00] request.CRITICAL: Uncaught PHP Exception TypeError: "count(): Argument #1 ($value) must be of type Countable|array, null given" at /srv/www/hof-keppel/public/contao49/vendor/heimrichhannot/subcolumns/elements/colsetStart.php line 157 {"exception":"[object] (TypeError(code: 0): count(): Argument #1 ($value) must be of type Countable|array, null given at /srv/www/hof-keppel/public/contao49/vendor/heimrichhannot/subcolumns/elements/colsetStart.php:157)"} []