2016-02-11 7 views
0

Я создаю пользовательский модуль в magento 2. Я хочу вызвать функции блока в файле phtml. Но это не работает. Пожалуйста, помогите мне.Как вызвать функции блока в файле phtml в magento 2?

Вот мой блок в файле папки adminhtml.

namespace Question\Topic\Block\Adminhtml; 

class Topic extends \Magento\Framework\View\Element\Template { 


    public function getSample() { 

      return "abhishek"; 

    } 

} 

И мой файл topic_order_view.xml ввиду/adminhtml/макет

<?xml version="1.0"?> 
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../../../lib/internal/Magento/Framework/View/Layout/etc/page_configuration.xsd"> 
    <body> 
     <referenceContainer name="content"> 
      <block class="Magento\Framework\View\Element\Template" name="view" template="Questions_Topic::view.phtml" /> 
     </referenceContainer> 
    </body> 
</page> 

Вот мой контроллер в контроллер/Adminhtml/Order/view.php ---

namespace Question\Topic\Controller\Adminhtml\Order; 

use Magento\Backend\App\Action; 
use Magento\Backend\App\Action\Context; 
use Magento\Framework\View\Result\PageFactory; 
use Magento\Framework\App\Config\ScopeConfigInterface; 

class View extends \Magento\Backend\App\Action 
{ 

    /** 
    * @var PageFactory 
    */ 
    protected $resultPageFactory; 
    /** 
    * @var scopeConfig 
    * Needed to retrieve config values 
    */ 
    protected $scopeConfig; 



    public function __construct(
     Context $context, 
     PageFactory $resultPageFactory, 
     ScopeConfigInterface $scopeConfig // Needed to retrieve config values 
    ) { 
     parent::__construct($context); 
     $this->resultPageFactory = $resultPageFactory; 
     $this->scopeConfig = $scopeConfig; // Needed to retrieve config values 
    } 

     public function execute() 
    { 
     $resultPage = $this->resultPageFactory->create(); 

     $resultPage->getConfig()->getTitle()->prepend(__('Orders')); // 

     return $resultPage; 

    } 
} 

my view.phtml file in view/adminhtml/templates/order/view.phtml

<?php 
//echo $this->getSample(); 
echo $block->getSample(); 

?> 

<h1>Hello </h1> 

Показан Привет слово. Но не эхо выше блок кода

Заранее спасибо ..

+0

Вы не упомянули свой класс темы для блока, в котором вы используете Magento \ Framework \ View \ Element \ Template, тогда как это возможно – Shine

ответ

1

Вы должны «сказать» макет, который вы хотите блокировать перейти к содержимому.

<?xml version="1.0"?> 
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd"> 
    <body> 
     <referenceContainer name="content"> 
      <block class="Question\Topic\Block\Adminhtml\Topic" name="question.topic.view" template="Questions_Topic::view.phtml" /> 
     </referenceContainer> 
    </body> 
</page> 
Смежные вопросы