Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Unparsable encoded id value #49

Closed
seaneble opened this issue May 13, 2016 · 62 comments
Closed

Unparsable encoded id value #49

seaneble opened this issue May 13, 2016 · 62 comments

Comments

@seaneble
Copy link

Beim Öffnen der Lightbox eines Tag-Attributes in einem Model erscheint bei uns folgende Meldung:

Fatal error: Uncaught exception ContaoCommunityAlliance\DcGeneral\Exception\DcGeneralRuntimeException with message Unparsable encoded id value: '' thrown in composer/vendor/contao-community-alliance/dc-general/src/ContaoCommunityAlliance/DcGeneral/Data/ModelId.php on line 116
#0 composer/vendor/contao-community-alliance/dc-general/src/ContaoCommunityAlliance/DcGeneral/BaseConfigRegistry.php(163): ContaoCommunityAlliance\DcGeneral\Data\ModelId::fromSerialized(NULL)
#1 composer/vendor/contao-community-alliance/dc-general/src/ContaoCommunityAlliance/DcGeneral/BaseConfigRegistry.php(185): ContaoCommunityAlliance\DcGeneral\BaseConfigRegistry->buildBaseConfig(NULL)
#2 composer/vendor/contao-community-alliance/dc-general/src/ContaoCommunityAlliance/DcGeneral/Contao/View/Contao2BackendView/TreePicker.php(802): ContaoCommunityAlliance\DcGeneral\BaseConfigRegistry->getBaseConfig()
#3 composer/vendor/contao-community-alliance/dc-general/src/ContaoCommunityAlliance/DcGeneral/Contao/View/Contao2BackendView/TreePicker.php(871): ContaoCommunityAlliance\DcGeneral\Contao\View\Contao2BackendView\TreePicker->getTreeCollectionRecursive(0, 0, NULL)
#4 composer/vendor/contao-community-alliance/dc-general/src/ContaoCommunityAlliance/DcGeneral/Contao/View/Contao2BackendView/TreePicker.php(609): ContaoCommunityAlliance\DcGeneral\Contao\View\Contao2BackendView\TreePicker->loadCollection(0)
#5 composer/vendor/contao-community-alliance/dc-general/src/ContaoCommunityAlliance/DcGeneral/Contao/View/Contao2BackendView/TreeSelect.php(147): ContaoCommunityAlliance\DcGeneral\Contao\View\Contao2BackendView\TreePicker->generatePopup()
#6 composer/vendor/contao-community-alliance/dc-general/contao/backend/generaltree.php(40): ContaoCommunityAlliance\DcGeneral\Contao\View\Contao2BackendView\TreeSelect->run()
#7 {main}

Das Attribut hat folgende Konfiguration: datenbankdump.txt

@seaneble
Copy link
Author

Offenbar tritt dies nur auf, wenn man auf dasselbe Model referenziert. Andere Models sowie sonstige Datenbanktabellen von Contao sind nicht betroffen.

@discordier discordier added this to the 2.0.0 milestone May 23, 2016
@discordier discordier added the bug label May 23, 2016
@zonky2
Copy link
Contributor

zonky2 commented Jan 18, 2017

core a15, tags a5, DCG b39
ich habe ein Attribut Mehrfachauswahl angelegt und auf das selbe MM referenziert - bei der Auswahl gab es keine Fehlermeldungen (alle vier Widgets getestet)

shot314

shot315

shot316

@zonky2 zonky2 closed this as completed Jan 18, 2017
@seaneble
Copy link
Author

Das Problem tritt nach wie vor auf. Die Fehlermeldung ist nicht verschwunden.

@zonky2 zonky2 reopened this Jan 18, 2017
@zonky2
Copy link
Contributor

zonky2 commented Jan 18, 2017

Wie kann ich den Case nachbauen bzw. was habe ich anders gemacht?
shot317

@seaneble
Copy link
Author

metamodels

Sieht nicht so unterschiedlich aus.

@seaneble
Copy link
Author

Eine Auswahl bei "Alias" verändert auch nichts.

@zonky2
Copy link
Contributor

zonky2 commented Jan 18, 2017

wie aktuell ist "der Rest"? hast Du die "Hotfix-Pakete" (Core + DCG) geladen?

@seaneble
Copy link
Author

Nein, bin noch auf den "stabilen" Versionen.

@zonky2
Copy link
Contributor

zonky2 commented Jan 18, 2017

es gab m.E. eine Anpassung bei den Tags, dass nicht mehr der Alias sondern die Id verwendet wird... kannst Du testweise die neuen/kommenden Branches ausprobieren?

@zonky2
Copy link
Contributor

zonky2 commented Jan 19, 2017

@seaneble kannst Du das checken? - dann könnte das Ticket (wieder) zu...

@seaneble
Copy link
Author

Das ist alles nicht so einfach, weil ich die Bundle-Pakete installiert habe. Außerdem ist mir aufgefallen, dass ich attribute_tags A6 habe, du nur A5. Die Auflösung des Bundles dauert noch ein bisschen, das ist ganz schön viel Arbeit.

@richardhj
Copy link
Member

du musst die Bundles nicht auflösen, du kannst deine composer.json einfach ergänzen: http://metamodels.readthedocs.io/de/latest/manual/install.html#test-von-speziellen-paketen-via-composer (… as 2.0.0)

@seaneble
Copy link
Author

Danke. Die Fehlermeldung besteht weiterhin.

@zonky2
Copy link
Contributor

zonky2 commented Jan 19, 2017

hmm... Frage wäre, was ist bei Dir anders ist

@seaneble
Copy link
Author

Laut Fehlermeldung ist es ja ein NULL-Wert, der eigentlich ein serialisiertes Array sein sollte. Aber aus welcher Tabelle und aus welchem Datensatz das kommt und wer es an diese Stelle gespeichert hat, entzieht sich meiner Kenntnis.

@seaneble
Copy link
Author

Eine kleine Analyse mit var_dump bringt mich auch nicht viel weiter als in die Tiefen von dc-general. Offenbar wird irgendwo ein Wert erwartet, der dort nicht ist. Die Objekte sind aber gigantisch groß und von der Struktur verstehe ich nicht viel.

@zonky2
Copy link
Contributor

zonky2 commented Jan 19, 2017

das Ganze ohne "Kundendaten" wirst wahrscheinlich nicht an mich übergeben können - oder? dann könnte ich das lokal mal bei mir einspielen

@zonky2
Copy link
Contributor

zonky2 commented Jan 19, 2017

hier nochmal meine Pakete

shot318

btw: hattest Du nach dem Update das Attribut nochmal aktualisiert?

@seaneble
Copy link
Author

Ich könnte schon einen Struktur-Export machen. Nur hat der Kunde ja quasi auch für diese Struktur gezahlt, ist also rechtlich schwierig. Wenn es wirklich von Interesse ist, könnten wir auch per TeamViewer herumsuchen.

Versionen stimmen exakt mit meinen überein.

Ja, hatte das Attribut erneut gespeichert.

@zonky2
Copy link
Contributor

zonky2 commented Jan 19, 2017

o.k. - dann Teamviewer... ich melde mich nochmal per E-Mail...

@zonky2
Copy link
Contributor

zonky2 commented Jan 19, 2017

Im Forum hast hast Du anscheinend einen anderen Nickname - hier mal meine E-Mail-Adresse: info@***.de - schick mir doch bitte mal Deine Infos...

@richardhj
Copy link
Member

richardhj commented Jan 19, 2017

Um das zu reproduzieren: Die MM-Eingabemaske ist rendertype ctable und rendermode parented.
Dann sieht man, dass der DCG in https://github.com/contao-community-alliance/dc-general/blob/hotfix/beta-39/src/ContaoCommunityAlliance/DcGeneral/BaseConfigRegistry.php#L162-L165 nach einer pid, fischt, die nicht in der URL gesetzt ist, weil ja die Lightbox geöffnet ist.

edit: https://github.com/contao-community-alliance/dc-general/blob/3702d96a96a39034d4ba1fa3d31b14020f884eaf/src/ContaoCommunityAlliance/DcGeneral/BaseConfigRegistry.php#L155-L156

@zonky2
Copy link
Contributor

zonky2 commented Jan 19, 2017

@richardhj hmmm.. was hast Du wo, wie eingestellt?

@richardhj
Copy link
Member

Eingabemaske des MM, auf das referenziert wird bildschirmfoto 2017-01-19 um 13 12 51
und diesen Mode für das Tags-Attribute
bildschirmfoto 2017-01-19 um 13 13 51

Es ist egal, ob das Attribute auf da gleiche MM referenziert.

@richardhj
Copy link
Member

Das scheint aber ein DCG Fehler zu sein.

$pid        = $environment->getInputProvider()->getParameter('pid');
$pidDetails = ModelId::fromSerialized($pid);

funktioniert scheinbar nicht im Popup

@zonky2
Copy link
Contributor

zonky2 commented Jan 19, 2017

o.k. - kannst Du ein Ticket im DCG aufmachen?

@richardhj
Copy link
Member

Aber doch bitte das Ticket nicht schließen 😄

@seaneble
Copy link
Author

Naja, wenn es eine Code-Änderung in DC_General benötigt, hat es hier ja eigentlich nichts zu suchen, oder?

@richardhj
Copy link
Member

Der fehlende pid Parameter muss aber irgendwie von dem tags attribute kommen. Mit deiner Änderung wurde der ja nur ausgeknockt

@zonky2
Copy link
Contributor

zonky2 commented Feb 17, 2017

@seaneble : denke ich auch - daher "wrong rep"... Frage ist, wo man die Einstellung hin packt - in das Popup (dann DCG) oder als Option wie die "Anzeige Baumstruktur-Ebene" dann zusätzlich in MM

@zonky2 zonky2 reopened this Feb 17, 2017
@zonky2
Copy link
Contributor

zonky2 commented Feb 20, 2017

@richardhj willst Du zu dem Thema noch einen PR machen? ansonsten schiebe ich das zu 2.1

@richardhj
Copy link
Member

In naher Zukunft werd ich keinen PR machen (können) :)

@zonky2
Copy link
Contributor

zonky2 commented Feb 20, 2017

o.k. - dann 2.1 ...

@zonky2 zonky2 modified the milestones: 2.1.0, 2.0.0 Feb 20, 2017
@zonky2 zonky2 modified the milestones: 2.1.0, 2.2 Mar 12, 2018
@zonky2 zonky2 modified the milestones: 2.2.0, Future Mar 31, 2020
@zonky2 zonky2 modified the milestones: Future, 2.2.0 Mar 29, 2021
@zonky2 zonky2 removed the question label Mar 29, 2021
@plorenz-etes
Copy link

plorenz-etes commented Mar 29, 2021

@zonky2 Hier wie besprochen der aktuelle Strack-Trace:

ContaoCommunityAlliance\DcGeneral\Exception\DcGeneralRuntimeException:
Unparsable encoded id value: ''

  at vendor/contao-community-alliance/dc-general/src/Data/ModelId.php:117
  at ContaoCommunityAlliance\DcGeneral\Data\ModelId::fromSerialized()
     (vendor/contao-community-alliance/dc-general/src/BaseConfigRegistry.php:156)
  at ContaoCommunityAlliance\DcGeneral\BaseConfigRegistry->buildBaseConfig()
     (vendor/contao-community-alliance/dc-general/src/BaseConfigRegistry.php:178)
  at ContaoCommunityAlliance\DcGeneral\BaseConfigRegistry->getBaseConfig()
     (vendor/contao-community-alliance/dc-general/src/Contao/View/Contao2BackendView/TreePicker.php:1022)
  at ContaoCommunityAlliance\DcGeneral\Contao\View\Contao2BackendView\TreePicker->getTreeCollectionRecursive()
     (vendor/contao-community-alliance/dc-general/src/Contao/View/Contao2BackendView/TreePicker.php:1132)
  at ContaoCommunityAlliance\DcGeneral\Contao\View\Contao2BackendView\TreePicker->loadCollection()
     (vendor/contao-community-alliance/dc-general/src/Contao/View/Contao2BackendView/TreePicker.php:819)
  at ContaoCommunityAlliance\DcGeneral\Contao\View\Contao2BackendView\TreePicker->generatePopup()
     (vendor/contao-community-alliance/dc-general/src/Controller/BackendTreeController.php:144)
  at ContaoCommunityAlliance\DcGeneral\Controller\BackendTreeController->runBackendTree()
     (vendor/contao-community-alliance/dc-general/src/Controller/BackendTreeController.php:73)
  at ContaoCommunityAlliance\DcGeneral\Controller\BackendTreeController->generalTreeAction()
     (vendor/symfony/http-kernel/HttpKernel.php:158)
  at Symfony\Component\HttpKernel\HttpKernel->handleRaw()
     (vendor/symfony/http-kernel/HttpKernel.php:80)
  at Symfony\Component\HttpKernel\HttpKernel->handle()
     (vendor/symfony/http-kernel/Kernel.php:201)
  at Symfony\Component\HttpKernel\Kernel->handle()
     (web/index.php:31)
  at require('/var/www/vhosts/heidehof/htdocs/website/web/index.php')
     (web/app.php:4)

Edit: C 4.9 mit MM 2.2; Eingabewidget ist der Popup-Picker; Fehler erscheint im Modalfenster

@zonky2
Copy link
Contributor

zonky2 commented Mar 29, 2021

Das Problem gibt es nur dann, wenn die Tabelle eine Kindtabelle einer anderen Tabelle ist - ob die Parent-Tabelle von MM oder Contao ist, ist egal

Das

Ähm, bei @discordier komme ich nicht mit. Meine Struktur hat keine Kindprojekte. Es gibt nur Projekte auf einer Ebene, die in der Tat mit "Vorprojekten", also Datensätzen aus dem gleichen MetaModel verlinkt sind. Dabei gibt es im Prinzip keinen Filter, höchstens die Selbstreferenz wäre zu verbieten.

stimmt demnach nicht - Projekte ist eine Kindtabelle von Bereiche.

Aktuell ist wohl eher das Problem, dass wenn eine Kindtabelle ausgewählt wird die Methode fromSerialized in https://github.com/contao-community-alliance/dc-general/blob/master/src/Data/ModelId.php#L109 drei Mal statt einmal ausgeführt wird und bei den beiden letzten Aufrufen $serialized leer ist und zu der Exception führt - der erste Durchlauf ist korrekt.

Es ist schon so, wie @discordier vermutet hat, dass die "Sibling-Projekte" nur aus dem selben Bereich kommen sollen - das würde ich aber an der Stelle nicht fest verankern, sondern über einen Filter realisieren - so wie "sich selbst nicht auswählbar".

Problem aktuell wäre aber, dass das Popup-Widget die im Attribut eingestellten Filter ignoriert - nur die drei anderen Widget-Typen können damit arbeiten.

@zonky2
Copy link
Contributor

zonky2 commented Mar 31, 2021

@plorenz-etes: Wir haben uns die Sache beim MM-call 30.03.2021 zusammen angesehen.

Die Einstellung "Popup-Widget" verwendet den "treepicker" aus dem DCG und der kommt an der Stelle mit dem "Parented" nicht klar - es müsste hier noch die Einstellung geben, ob das Model "parented" oder "flat" ist.

Aktuell könnte man das wohl nur über einen eigenen Eventlistener lösen, der für den Picker von "parented" auf "flat" umstellt, oder die Relation von Kindtabelle zu einen Attribut Einzelauswahl [select] umbauen.

@zonky2 zonky2 modified the milestones: 2.2.0, Future Mar 31, 2021
@zonky2 zonky2 removed the bug label Mar 31, 2021
@zonky2
Copy link
Contributor

zonky2 commented May 12, 2021

gefixt in MM 2.2 mit neuer Einstellung von DCG

@zonky2 zonky2 closed this as completed May 12, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

6 participants