Liebe Gemeinde,
ich bin Neuling in der MetaModels-Welt und muss aktuell Fehlerbehebung in einem Template betreiben.
Hier kurz die Ausgabngssituation:
Es gibt ein MetaModel <tiere> welches ein Attribut <geschlecht> enthält. Dieses Attribut ist mit einem weiteren MetaModel verknüft, welches nicht nur "männlich, weiblich" enthält sonder auch die tierart.
Nutze ich das Standardtemplate zur Ausgabe eines Tieres, wird mit das <geschlecht> richtig ausgegeben.
Nun muss ich in einem Template das Tier separat abfragen und nutze dazu folgenden Code
Code:
$idlist[] = $tier['id'];
$factory = \Contao\System::getContainer()->get('metamodels.factory');
$model = $factory->getMetaModel(<tabellenname_tiere>);
$languages = $model->getAvailableLanguages();
$attribute = $model->getAttribute('id');
$availableLang = $model->getLanguages();
if (in_array($currentLanguage, $availableLang)) {
$model->selectLanguage($currentLanguage);
} else {
$model->selectLanguage('en');
}
$filter = $model->getEmptyFilter();
$filter->addFilterRule(new \MetaModels\Filter\Rules\StaticIdList($idlist));
$item = $model->findByFilter($filter);
$item_parsed = $item->parseAll('html5', $model->getView(13));
$tier_parsed = $item;
Ein
Code:
dump($item_parsed);
gibt mir zwar ein Objekt mit Daten zurück, jedoch fehlen einige Daten bzw. enthalten den Wert NULL. In diesem Beispiel gender_dog, gender_cat, rasse. Diese Daten haben eins gemeinsam. Sie stehen, wie schon erwähnt, nicht in einer n:1-Beziehung zum Tier sondern eher in einer n:n:1-Beziehung.
Code:
^ array:48 [?
"id" => "XXXX"
"pid" => "0"
"sorting" => "0"
"tstamp" => "1705524547"
"rufname" => "Rudi"
"tier" => array:4 [?]
"gender_dog" => null
"gender_cat" => null
"kastriert" => array:2 [?]
"rasse" => null
"geburtsdatum" => "1293914948"
]
Kann man den Interfaces von MetaModels mitteilen, wie "tief" die Daten ausgelesen werden sollen, sodass auch die zweite Relationsebene ausgelesen wird?
Hat jemand ein Codebeispiel für mich?
Beste Grüße!
Frank
Lesezeichen