Magento 2 自定义小部件设置模板数据未在前端呈现

Magento 2 Custom Widget set template data not render at frontend

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

Technologymindz/Instagramfeed/Block/Widget/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/view/frontend/widget/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 数据渲染教程。

好的,经过大量研究,我找到了一篇温和的文章 here 并且这个问题适合我。我确实完全删除了 _toHtml 功能

解决方案对我有用:

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