gpt4 book ai didi

php - Magento 2 : I want to add ifconfig in override block xml

转载 作者:可可西里 更新时间:2023-10-31 23:01:10 25 4
gpt4 key购买 nike

我试图用来自的 phtml 文件覆盖 block

供应商\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>

当我从配置中启用模块时,然后使用我的 block 和 phtml 文件执行。

当禁用模块时,然后执行默认文件并阻止。

但是当我从配置中禁用模块时,默认文件和 block 不会执行。

请帮我解决这个问题

提前致谢。

最佳答案

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;
}
}

然后将您的 block 包含在布局中而不是这个

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

关于php - Magento 2 : I want to add ifconfig in override block xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47237179/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com