Magento 2:我想在覆盖块中添加 ifconfig xml
Magento 2 : I want to add ifconfig in override block xml
我试图用
中的 phtml 文件覆盖块
vendor\magento\module-checkout\view\frontend\success.phtml
到我的文件
app\code\Custom\Module\view\frontend\checkout\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 文件执行。
当禁用模块时,然后执行默认文件并阻止。
但是当我从配置中禁用模块时,默认文件和块不会执行。
请帮我解决这个问题
提前致谢。
if config 只有在其值为 true 时才会显示模板,它不会像 else 条件那样工作。
为了解决你的问题,我建议你创建一个辅助函数并在辅助方法中添加条件。
像这样:
<?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>
我试图用
中的 phtml 文件覆盖块vendor\magento\module-checkout\view\frontend\success.phtml
到我的文件
app\code\Custom\Module\view\frontend\checkout\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 文件执行。
当禁用模块时,然后执行默认文件并阻止。
但是当我从配置中禁用模块时,默认文件和块不会执行。
请帮我解决这个问题
提前致谢。
if config 只有在其值为 true 时才会显示模板,它不会像 else 条件那样工作。
为了解决你的问题,我建议你创建一个辅助函数并在辅助方法中添加条件。
像这样:
<?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>