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