Magento 2 - ifconfig trong bố cục xml


16

Tôi đang làm việc với magento 2.

Tôi có thể sử dụng thuộc tính ifconfig trong mã khối và nó hoạt động tốt.

<block class="Magento\Catalog\Block\Category\View" name="category_desc_main_column" template="category/desc_main_column.phtml" ifconfig="config_path/group/field" before="category.products"/>

Nhưng tôi đã cố gắng sử dụng nó để di chuyển, nó không hoạt động.

<move element="category.image" destination="content" ifconfig="config_path/group/field" before="-"/>

Bất cứ ai cũng biết làm thế nào để sử dụng nó để di chuyển?


Bạn đã tìm nó chưa? Tôi thấy nó trong trình đọc khối , nhưng không có gì trong di chuyển một. Đừng nghĩ rằng bạn có thể.
nevvermind

Có cách nào khác cho nó mà không sử dụng ifconfig không?
Mike

Câu trả lời:


5

Từ những gì tôi hiểu bạn không thể sử dụng ifconfigkhi đang di chuyển. Trong lớp Magento\Framework\View\Layout\Reader\Block.phpcó một kiểm tra cho thuộc tính ifconfig:

$configPath = (string)$currentElement->getAttribute('ifconfig');

nguồn:
https://github.com/magento/magento2/blob/2.3-develop/lib/iternal/Magento/Framework/View/Layout/Reader/Block.php

Tuy nhiên, trên khối di chuyển không thực sự kiểm tra ifconfigthuộc tính:

protected function scheduleMove(Layout\ScheduledStructure $scheduledStructure, Layout\Element $currentElement)
    {
        $elementName = (string)$currentElement->getAttribute('element');
        $destination = (string)$currentElement->getAttribute('destination');
        $alias = (string)$currentElement->getAttribute('as') ?: '';
        if ($elementName && $destination) {
            list($siblingName, $isAfter) = $this->beforeAfterToSibling($currentElement);
            $scheduledStructure->setElementToMove(
                $elementName,
                [$destination, $siblingName, $isAfter, $alias]
            );
        } else {
            throw new \Magento\Framework\Exception\LocalizedException(
                new \Magento\Framework\Phrase('Element name and destination must be specified.')
            );
        }
        return $this;
    }

https://github.com/magento/magento2/blob/2.3-develop/lib/iternal/Magento/Framework/View/Layout/Reader/Move.php#L49

Trong Theroy, bạn không cần ifconfig khi đang di chuyển nếu đã có ifconfig trên khối vì khối sẽ không được hiển thị và do đó không được di chuyển.

Hy vọng rằng có ý nghĩa.


Có phần mở rộng nào có tính năng mạnh của ifconfig như 1.x không?
Mike

Xin chào @Dmitry tôi không nghĩ có hoặc có một cái mà tôi không biết. Bạn cần ifconfig để làm gì?
rob3000

ví dụ: <method action = "setTemplate" ifconfig = "config_path / nhóm / trường" condition = "one_column"> <template> trang / 1column.phtml </ template> </ action> Tôi có nghĩa là "ifconfig" và "điều kiện"
Mike
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.