Magento 2 Custom Widget设置模板数据不在前端渲染

时间:2016-06-24 06:33:41

标签: php magento widget magento2

我正在使用自定义扩展程序创建自定义小部件。我按照this在我的自定义扩展程序中创建小部件。所有工作正常,但数据未显示在模板中$this->setTemplate('widget/viewed_list.phtml'); 在我的代码下面:

  

Technologymindz / Instagramfeed /砌块/空间/ Instawidget.php

<?php
namespace Technologymindz\Instagramfeed\Block\Widget;

class Instawidget extends \Magento\Framework\View\Element\Template implements \Magento\Widget\Block\BlockInterface
{

    public function _toHtml()
    {
        $this->setTemplate('widget/viewed_list.phtml');

    }


}
  

Technologymindz / Instagramfeed的/ etc / widget.xml

<?xml version="1.0" encoding="UTF-8"?>

<widgets xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../Magento/Widget/etc/widget.xsd">
    <widget id="tm_customwidget" class="Technologymindz\Instagramfeed\Block\Widget\Instawidget">
        <label translate="true">Instagram Feeds</label>
        <description>Show Your Instagram Feeds Anywhere</description>
        <parameters>
                        <parameter name="tmfeedtoshow" xsi:type="select" required="true" visible="true">
                            <label>Show Latest Feeds</label>
                            <options>
                                <option name="default" value="12" selected="true">
                                    <label translate="true">12</label>
                                </option>
                                <option name="list" value="24">
                                    <label translate="true">24</label>
                                </option>                              
                            </options>
                        </parameter>
            <parameter name="tmview_type" xsi:type="select" required="true" visible="true">
                            <label>Select View Type</label>
                            <options>
                                <option name="default" value="widget/viewed_grid.phtml" selected="true">
                                    <label translate="true">Grid View</label>
                                </option>
                                <option name="list" value="widget/viewed_list.phtml">
                                    <label translate="true">List View</label>
                                </option>                              
                            </options>
                        </parameter>
        </parameters>                
    </widget>
</widgets>
  

Technologymindz / Instagramfeed /视图/前端/插件/ viewed_list.phtml

<?php
echo $this->getTmview_type();
echo 'Welcome';
?>

数据输出未显示viewed_list.phtml,但是如果我在阻止_toHtml()功能中设置的内容比显示的要好。

public function _toHtml()
    {
        return '<p class="hello">Hello world!</p>';
    }

我希望.phtml中的管理输出不在Block中,希望我可以在模板上获得Magento 2自定义Widget数据渲染的更好或更好的教程。

1 个答案:

答案 0 :(得分:2)

好的,经过大量的研究,我找到了一篇温和的文章here,这对我来说是一个问题。我完全删除了_toHtml函数

解决方案对我有用:

protected function _construct()
    {
        parent::_construct();
        $this->setTemplate('widget/viewed_list.phtml');
    }