Magento的2:我想补充的ifconfig在覆盖块XML
问题描述:
我试图从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文件。
当禁用模块,然后执行默认文件和块。
但是,当我从配置禁用模块时,默认文件和块不会执行。
请帮我解决这个问题
在此先感谢。
答
如果配置将只显示模板,当它的值为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>
感谢重播 它的工作对我来说 –