既然您已經掌握了後端,我將專注於前端。而且,因爲你需要做的就是填充你已經創建的列表應該很容易。我之前做過這樣的事情,我發現使用JSON查詢列表(在您的情況下是城市)並填充下拉列表更容易。我不認爲這是最「MVP /合適」的路線,但是其他方面的工作較少。 (至少對我來說是這樣,我總是比較喜歡JavaScript選項,因爲它允許將來進行簡單的頁面自定義。) 要使用JSON方法,您需要使用類似下面的方法創建一個Block。你會看到你還必須創建一個資源模型(我不打算重新創建資源模型或塊的細節,因爲有比我已經在線的資源好得多的資源,將會進入你需要的每一個細節)。完成此操作後,您可以直接從簡單易用的JSON數組中的.phtml頁面訪問數據。
首先,您需要確保您現在正確地構建模塊。下面新的塊應該是這樣的結構...
app/code/<VENDOR>/<MODULE>/Block/Wrapper.php (or whatever you name it)
管理模塊應該是下面的結構,它聽起來就像你已經知道該怎麼做。
app/code/<VENDOR>/<MODULE>/Block/Adminhtml
創建塊,並加入到創建JOSN陣列像下面的方法...
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 ...在上面的代碼foreach循環是怪異,並使用$計,因爲我需要做一些棘手的事情來完成某些工作。
然後,您可以在您的.phtml文件中創建Block以通過javascript訪問數據。
<?php
$block_obj = $block->getLayout()->createBlock('<VENDOR>\<MODULE>\Block\Wrapper');
?>
<script type="text/javascript">
window.citylistJson = <?php echo $block_obj->getCityList() ?>;
</script>