Der Vollständigkeit halber hier die Lösung von meinem oben beschriebenen Problem.
Ich habe im Template "metamodel_prerendered.html" eine Abfrage zu der Tabelle mm_positions und filter nach der "id" von mm_order (in mm_positions habe ich ja über das "select" den verbundenen Wert stehen). Lasse mir die Werte am Ende der foreach-Schleife ausgeben.
metamodel_prerendered.html:
Code:
<?php
/* Parameter*/
// Name der MetaModel Tabelle (siehe "Das erstes Metamodel")
$modelName = 'mm_positions';
// ID der Render-Einstellungen "FE-Liste"
$renderId = 7;
// ID des Filters
$filterId = 7;
?>
<?php if (count($this->data)): ?>
<div class="layout_full">
<?php foreach ($this->data as $arrItem): ?>
<?php
$numItems = count($arrItem['attributes']);
$i = 0;
?>
<?php $this->block('item'); ?>
<div class="item <?= $arrItem['class'] ?>">
<?php foreach ($arrItem['attributes'] as $field => $strName): ?>
<?php if ((isset($arrItem[$this->getFormat()][$field])
&& ($strValue = $arrItem[$this->getFormat()][$field])
|| (isset($arrItem['text'][$field]) && ($strValue = $arrItem['text'][$field])))): ?>
<div class="field <?= $field ?>">
<?php if (!$this->view->get('hideLabels')): ?>
<div class="label"><?= sprintf(
$GLOBALS['TL_LANG']['MSC']['field_label'],
$strName
) ?></div>
<?php endif; ?>
<div class="value"> <?= $strValue ?></div>
</div>
<?php if (++$i === $numItems): ?>
<?php
/* Interface */
$factory = $this->getContainer()->get('metamodels.factory');
$model = $factory->getMetaModel($modelName);
$position_order_number_current = $arrItem['raw']['id'];
$arrFilterorder_number = ['position_order_number_filter' => $position_order_number_current];
$filter = $model->prepareFilter($filterId, $arrFilterorder_number);
// alle Items
$items = $model->findByFilter($filter);
// alle Items geparst zu Array mit HTML5 Knoten
$arrItemsPosition = $items->parseAll('html5', $model->getView($renderId));
/* Ausgabe */
// Anzahl der Items
// cecho 'Anzahl: '.$items->getCount()."<br>\n";
?>
<div class="field product-number">
<?php
// Items-Array
foreach ($arrItemsPosition as $arrItemPosition)
{
echo $arrItemPosition['html5']['position_product_number'];
}
?>
</div>
<?php endif; ?>
<?php endif; ?>
<?php endforeach; ?>
<?php $this->block('actions'); ?>
<div class="actions">
<?php foreach ($arrItem['actions'] as $action): ?>
<?php $this->insert('mm_actionbutton', ['action' => $action]); ?>
<?php endforeach; ?>
</div>
<?php $this->endblock(); ?>
</div>
<?php $this->endblock(); ?>
<?php endforeach; ?>
</div>
<?php else : ?>
<?php $this->block('noItem'); ?>
<p class="info"><?= $this->noItemsMsg ?></p>
<?php $this->endblock(); ?>
<?php endif; ?>
Haben den Filter im MM Positions als Eigenes SQL:
Code:
SELECT id FROM mm_positions WHERE position_order_number = {{param::filter?name=position_order_number_filter}}
P.S.: im Eingangspost war meine Filter-ID falsch. OO
Das sollte auch funktionieren.
Lesezeichen