Ich habe jetzt ausführlich das von menatwork entwickelte übersetzte MCW-Attribute getestet. Funktioniert soweit gut, großen Dank an die Entwickler. Ich persönlich halte es für ein mehr als sinnvolles Attribut. In einem einzelnen Metamodel funktioniert es ohne Probleme, soweit ich es bis jetzt überblicken konnte. Probleme tauchen aber auf, wenn man zwei Metamodels miteinander "verknüpft". Folgender Fall:
Es werden zwei Metamodels angelegt (mm_1 und mm_2). mm_2 enthält ein oder mehrere Attribut vom Typ "attribute_translatedmulti"
mm_1 holt sich einen Datensatz per select-attribut aus mm_2. Ruft man jetzt im Frontend die Detailansicht des Datensatzes aus mm_1 auf, wird im Error-Log folgender Eintrag erstellt:
PHP-Code:
PHP Warning: Invalid argument supplied for foreach() in /html/energie.s2-web.de_C.3.5.17/system/modules/metamodelsattribute_translatedmulti/templates/mm_attr_translatedmulti.text on line 2
#0 /system/modules/metamodelsattribute_translatedmulti/templates/mm_attr_translatedmulti.text(2): __error(2, 'Invalid argumen...', '/html/energie.s...', 2, Array)
#1 /composer/vendor/metamodels/core/src/MetaModels/Render/Template.php(349): include('/html/energie.s...')
#2 /composer/vendor/metamodels/core/src/MetaModels/Attribute/Base.php(517): MetaModels\Render\Template->parse('text', true)
#3 /composer/vendor/metamodels/core/src/MetaModels/Attribute/Base.php(528): MetaModels\Attribute\Base->parseValue(Array, 'text', Object(MetaModels\Render\Setting\Simple))
#4 /composer/vendor/metamodels/core/src/MetaModels/Item.php(115): MetaModels\Attribute\Base->parseValue(Array, 'text', NULL)
#5 /composer/vendor/metamodels/core/src/MetaModels/Item.php(404): MetaModels\Item->internalParseAttribute(Object(MetaModels\Attribute\TranslatedMulti\TranslatedMulti), 'text', NULL)
#6 /composer/vendor/metamodels/attribute_select/src/MetaModels/Attribute/Select/MetaModelSelect.php(114): MetaModels\Item->parseValue()
#7 /composer/vendor/metamodels/attribute_select/src/MetaModels/Attribute/Select/MetaModelSelect.php(148): MetaModels\Attribute\Select\MetaModelSelect->itemsToValues(Object(MetaModels\Items))
#8 /composer/vendor/metamodels/attribute_select/src/MetaModels/Attribute/Select/MetaModelSelect.php(568): MetaModels\Attribute\Select\MetaModelSelect->getValuesById(Array)
#9 /composer/vendor/metamodels/core/src/MetaModels/MetaModel.php(403): MetaModels\Attribute\Select\MetaModelSelect->getDataFor(Array)
#10 /composer/vendor/metamodels/core/src/MetaModels/MetaModel.php(471): MetaModels\MetaModel->fetchAdditionalAttributes(Array, Array, Array)
#11 /composer/vendor/metamodels/core/src/MetaModels/MetaModel.php(698): MetaModels\MetaModel->getItemsWithId(Array, Array)
#12 /composer/vendor/metamodels/core/src/MetaModels/ItemList.php(560): MetaModels\MetaModel->findByFilter(Object(MetaModels\Filter\Filter), '', 0, 0, 'ASC', Array)
#13 /composer/vendor/metamodels/core/src/MetaModels/ItemList.php(774): MetaModels\ItemList->prepare()
#14 /composer/vendor/metamodels/core/src/MetaModels/FrontendIntegration/HybridList.php(116): MetaModels\ItemList->render('', Object(MetaModels\FrontendIntegration\Content\ModelList))
#15 /system/modules/core/classes/Hybrid.php(239): MetaModels\FrontendIntegration\HybridList->compile()
#16 /composer/vendor/metamodels/core/src/MetaModels/FrontendIntegration/MetaModelHybrid.php(109): Contao\Hybrid->generate()
#17 /composer/vendor/metamodels/core/src/MetaModels/FrontendIntegration/HybridList.php(55): MetaModels\FrontendIntegration\MetaModelHybrid->generate()
#18 /system/modules/core/library/Contao/Controller.php(484): MetaModels\FrontendIntegration\HybridList->generate()
#19 /system/modules/core/modules/ModuleArticle.php(213): Contao\Controller::getContentElement(Object(Contao\ContentModel), 'main')
#20 /system/modules/core/modules/Module.php(287): Contao\ModuleArticle->compile()
#21 /system/modules/core/modules/ModuleArticle.php(67): Contao\Module->generate()
#22 /system/modules/core/library/Contao/Controller.php(417): Contao\ModuleArticle->generate(false)
#23 /system/modules/core/library/Contao/Controller.php(277): Contao\Controller::getArticle(Object(Contao\ArticleModel), true, false, 'main')
#24 /system/modules/core/pages/PageRegular.php(133): Contao\Controller::getFrontendModule('0', 'main')
#25 /system/modules/core/controllers/FrontendIndex.php(285): Contao\PageRegular->generate(Object(Contao\PageModel), true)
#26 /index.php(20): Contao\FrontendIndex->run()
#27 {main}
Dabei ist es unerheblich ob die Daten des MVC im Template angezeigt werden oder nicht. Schon das pure Anlegen des Attributes produziert diesen Fehler (d.h. Attribut ist nicht zur Eingabemaske hinzugefügt oder in den Render-Einstellungen).
Als weitern Test habe ich das Metamodel mm_1 per Interface in mm_2 eingebunden. Gleicher Fehler!!!
Ich bin echt ratlos und benötige das Attribute unbedingt für mehrere Projekte. Zumal pro Seitenabruf der Fehler genau 46-mal ins Errorlog geschrieben wird. Die Seite benögt ca. 10 Sekunden zum laden und zeigt dann alles an (auch die Daten des attribute_translatedmulti). Aber das ist in Sachen Performance und Serverlast unbefriedigend. Zumal das Error-Log ganz fix auf mehrere Gigabyte ansteigt.
PHP-Version und Größe RAM:
Contao-Version: 3.5.24
MM per Composer
MM Version core: 2.0.0-alpha15
DC-General Version: 2.0.0-beta39
spezielle Hotfix-Pakete eingespielt?: nein
Gruß
sev
Lesezeichen