2017-11-11 174 views
1

我試圖從Magento的2:我想補充的ifconfig在覆蓋塊XML

供應商\ Magento的\模塊結賬\圖\前端覆蓋使用PHTML文件塊\ success.phtml

我的文件

應用\代碼\定製\模塊\視圖\前端\結帳\ success.phtml

和XML文件是checkout_onepage_success.xml

<referenceBlock name="checkout.success"> 
     <action method="setTemplate" ifconfig="custom_general/general/active"> 
      <argument name="template" xsi:type="string">Custom_Module::checkout/success.phtml</argument> 
     </action> 
</referenceBlock> 

當我從配置啓用模塊,然後執行我的塊和phtml文件。

當禁用模塊,然後執行默認文件和塊。

但是,當我從配置禁用模塊時,默認文件和塊不會執行。

請幫我解決這個問題

在此先感謝。

回答

0

如果配置將只顯示模板,當它的值爲true時,它不起作用其他條件。

爲了解決您的問題,我建議您創建一個輔助函數並在輔助方法中添加條件。

事情是這樣的:

<?php 

namespace Custom\Module\Helper; 

class Data extends \Magento\Framework\App\Helper\AbstractHelper 
{ 
    protected $_request; 

    public function __construct 
    (
     \Magento\Framework\App\Request\Http $request 
    ) { 
     $this->_request = $request; 
    } 

    public function getTemplate() 
    { 
     if ($this->_scopeConfig->isSetFlag('custom_general/general/active')) { 
      $template = 'Custom_Module::checkout/success.phtml'; 
     } else { 
      $template = 'Vendor_Module::checkout/success.phtml'; 
     } 

     return $template; 
    } 
} 

然後包括你的區塊,佈局 取而代之的是

<referenceBlock name="checkout.success"> 
    <action method="setTemplate"> 
     <argument name="template" xsi:type="helper" helper="Custom\Module\Helper\Data::getTemplate"></argument> 
    </action> 
</referenceBlock> 
+0

感謝重播 它的工作對我來說 –