Da Sie bereits das Back-End herausgefunden haben, werde ich mich auf Front-End konzentrieren. Da Sie lediglich eine Liste auffüllen müssen, die Sie bereits erstellt haben, sollte dies einfach sein. Ich habe so etwas schon einmal gemacht und ich fand es einfacher, einfach JSON zu benutzen, um eine Liste von Städten abzufragen und das Drop-Down zu füllen. Ich glaube nicht, dass dies der "MVP/richtige" Weg ist, aber es ist weniger Arbeit als die anderen Wege. (Zumindest für mich ist es das. Ich bevorzuge immer die JavaScript-Option, da es eine einfache zukünftige Anpassung der Seite ermöglicht.) Um die JSON-Methode zu verwenden, müssen Sie einen Block mit einer Methode wie der folgenden erstellen. Sie werden sehen, dass Sie auch ein Ressourcenmodell erstellen müssen (ich werde nicht auf das Erstellen des Ressourcenmodells oder die Details von Blöcken eingehen, da es viel bessere Ressourcen als ich bereits online gibt, die in jedes Detail gehen, das Sie brauchen .). Sobald dies abgeschlossen ist, können Sie direkt von der .phtml-Seite auf die Daten in einem einfach zu verwendenden JSON-Array zugreifen.
Zuerst müssen Sie sicherstellen, dass Sie jetzt Ihre Module richtig strukturieren. Der neue Block unten sollte wie folgt in einer Struktur sein ...
app/code/<VENDOR>/<MODULE>/Block/Wrapper.php (or whatever you name it)
Die Admin-Blocks in der Struktur unten sein sollte, was es klingt wie Sie bereits wissen, sind, wie zu tun.
app/code/<VENDOR>/<MODULE>/Block/Adminhtml
Erstellen Sie Ihren Block und eine Methode hinzufügen, wie unten, um ein JOSN Array zu erstellen ...
public function getCityList()
{
$city_array = array();
/** @var \<VENDOR>\<MODULE>\Model\ResourceModel\City\Collection $collection */
$collection = $this->_cityCollectionFactory->create();
$collection->addFieldToFilter('active','1')->addFieldToSelect(['city_id', 'city']);
$collection->getSelect()->order(array('city ASC', 'city_id ASC'));
$count = 0;
foreach ($collection as $model)
{
$city_array["$count"] = $model->getData();
$count++;
}
return \Zend_Json::encode($city_array);
}
FYI ... Die foreach-Schleife in dem obigen Code seltsam ist und verwendet $ zählen, weil ich musste einige knifflige Dinge tun, um etwas zum Arbeiten zu bringen.
Dann können Sie den Block in Ihrer .phtml-Datei erstellen, um über Javascript auf die Daten zuzugreifen.
<?php
$block_obj = $block->getLayout()->createBlock('<VENDOR>\<MODULE>\Block\Wrapper');
?>
<script type="text/javascript">
window.citylistJson = <?php echo $block_obj->getCityList() ?>;
</script>