既然您已经掌握了后端,我将专注于前端。而且,因为你需要做的就是填充你已经创建的列表应该很容易。我之前做过这样的事情,我发现使用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>