2017-05-08 146 views
0

我想創建一個既有前端功能又有後端功能的模塊。就像我在商店加載時需要在主頁上詢問城市一樣。所有可用城市都在後臺管理面板中輸入/管理。如何修改magento前端頁面

在我以前只寫後端的東西之前,前端似乎沒什麼混淆。

有一個完全用於主題開發的設計文件夾。

所有的例子都有點不同(https://www.mageplaza.com/magento-2-module-development/http://inchoo.net/magento-2/how-to-create-a-basic-module-in-magento-2/]2),他們有routes.xml,其中route_id,和所有的定義,但在這裏,我不需要任何額外的途徑。需要在前端頁面進行一些額外的調整。

我創建的模塊V_name/M_name/adminhtml/block controllers etc view ...

指導我如何創建一個模塊,同時具有前端和後端連接,城市應該在管理員進入,他們應該能顯示在前端網頁。

現在,我只設法編輯主頁內容CMS頁面,通過添加一些顯示彈出式頁面加載頁面的城市下拉菜單的HTML頁面。

回答

0

既然您已經掌握了後端,我將專注於前端。而且,因爲你需要做的就是填充你已經創建的列表應該很容易。我之前做過這樣的事情,我發現使用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>