首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修改magento前端页面

如何修改magento前端页面
EN

Stack Overflow用户
提问于 2017-05-09 00:48:25
回答 1查看 573关注 0票数 0

我试图创建一个模块,既有前端和后端的功能。例如,当商店加载时,我需要在主页中询问城市。所有可用的城市都是在后台管理面板中输入/管理的。

在我以前只写后端的东西之前,前端似乎有点令人困惑。

所有的例子都有一点不同(https://www.mageplaza.com/magento-2-module-development/,http://inchoo.net/magento-2/how-to-create-a-basic-module-in-magento-2/](http://inchoo.net/magento-2/how-to-create-a-basic-module-in-magento-2/])2),,它们都有routes.xml,where route_id,以及都是定义的,但是这里我不需要任何额外的路由。

我创建了模块V_name/M_name/adminhtml/block controllers etc view ...

指导我如何创建一个模块,其中既有前端和后端连接,城市应该进入管理,他们应该在前端主页上显示。

目前,我只能通过添加一些HTML来编辑主页内容CMS页面,当页面加载时,它会显示带有城市下拉菜单的弹出窗口。

EN

回答 1

Stack Overflow用户

发布于 2017-05-09 01:38:35

既然您已经弄清楚了后端,我将把重点放在前端。此外,由于您需要做的是填充已创建的列表,因此这应该很容易。我以前做过类似的事情,我发现只需使用JSON查询一个列表(在本例中是城市)并填充下拉列表会更容易。我不认为这是最“MVP/适当”的方法,但它比其他方法更少的工作量。(至少对我来说是这样。我总是更喜欢JavaScript选项,因为它允许将来轻松地进行页面定制。)要使用JSON方法,您需要使用如下所示的方法创建一个Block。您将看到,您还必须创建一个资源模型(我不会重复创建资源模型或块的详细信息,因为已经有比我更好的在线资源,这些资源将深入到您需要的每一个细节中)。完成此操作后,您可以在一个易于使用的.phtml数组中直接从JSON页面访问数据。

首先,您需要确保现在正确地构建了您的模块。下面的新积木应该是这样的结构…

代码语言:javascript
复制
app/code/<VENDOR>/<MODULE>/Block/Wrapper.php (or whatever you name it)

管理区块应该在下面的结构中,这听起来像你已经知道如何做。

代码语言:javascript
复制
app/code/<VENDOR>/<MODULE>/Block/Adminhtml

创建Block并添加一个方法来创建JOSN数组,如下所示……

代码语言:javascript
复制
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);
}

仅供参考。上面代码中的foreach循环很奇怪,它使用了$count,因为我需要做一些棘手的事情才能让一些东西工作。

然后,您可以在.phtml文件中创建该块,以便通过javascript访问数据。

代码语言:javascript
复制
<?php
    $block_obj = $block->getLayout()->createBlock('<VENDOR>\<MODULE>\Block\Wrapper');
?>
<script type="text/javascript">

    window.citylistJson = <?php echo $block_obj->getCityList() ?>;

</script>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43853085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档