Cách tạo thẻ đầu vào có thuộc tính vô hiệu hóa trong system.xml Magento 2


7

Trong tôi system.xml, tôi có một thẻ trường như:

<field id="token" translate="label comment" type="text" sortOrder="20" showInDefault="1" showInWebsite="1" showInStore="1">
      <label>Auth Token</label>
</field>

Thuộc tính tôi cần thêm vào thẻ trường để tắt đầu vào trong Cấu hình là gì?

Cảm ơn

Câu trả lời:


21

Tôi nghĩ rằng <frontend_model>làm việc cho bạn nhưMagento1

<field id="recipient_email" translate="label" type="text" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1">
                    <label>Send Emails To</label>
                    <validate>validate-email</validate>
                    <frontend_model>YOUR_NAMESPACE\YOUR_MODULE\Block\System\Config\Form\Field\Disable</frontend_model>
                </field>

frontend_modellớp học của bạn phải là

<?php
namespace YOUR_NAMESPACE\YOUR_MODULE\Block\System\Config\Form\Field;

use Magento\Framework\Data\Form\Element\AbstractElement;

class Disable extends \Magento\Config\Block\System\Config\Form\Field
{    
    protected function _getElementHtml(AbstractElement $element)
    {
        $element->setDisabled('disabled');
        return $element->getElementHtml();

    }
}

10

Câu trả lời của Keyur Shah là đúng nhưng tôi thấy rằng không thể sao chép giá trị của phần tử bị vô hiệu hóa. Vì vậy, thay vì viết $element->setDisabled('disabled'); bạn có thể viết $element->setData('readonly', 1);. Điều này hiển thị trường theo cùng một cách nhưng bạn có thể đánh dấu giá trị và sao chép nó.


3

Điều này không được hỗ trợ bởi XSD hiện tại của system.xml ( Magento / Config / etc / system.xsd ).

Để kích hoạt hành vi như vậy cho tất cả các loại trường cùng một lúc, có thể mở rộng \Magento\Config\Block\System\Config\Form\Field::render()(ví dụ: sử dụng bổ trợ) để làm cho nó hỗ trợ typegiá trị mới của attributephần tử:

<field id="token" ...>
      <label>Auth Token</label>
      <attribute type="disabled">1</attribute>
</field>

Tại thời điểm này chúng ta có thể chỉ định bất kỳ giá trị cho typecác attributephần tử, nhưng giá trị chỉ sharedsẽ được xử lý, xem \Magento\Config\Block\System\Config\Form::_getSharedCssClass(). Xử lý tương tự có thể được thêm vào trong một plugin mới để vô hiệu hóa phần tử nếu attributeđược chỉ định.


0

một cách khác để vô hiệu hóa trường của bạn, là đặt giá trị trong env.phptệp. Env.php cho phép bạn đặt cấu hình theo mặc định và tắt các trường được ánh xạ trong env.phptệp. Cấu hình của bạn không thể thay đổi bởi người dùng quản trị. Nó khá thuận tiện nếu bạn muốn đặt một số cài đặt nhạy cảm.

'system' => [
   'default' => [
      'your_path => [
         'to_your' =>[
            'system_config =>['my special config in the store config']
          ],
       ],
   ]
]

-3

Thử đặt tất cả các trường hiển thị * thành 0

<field id="token" showInDefault="0" showInWebsite="0" showInStore="0">
</field>

1
Tôi muốn vô hiệu hóa thẻ đầu vào, nhưng nếu đặt thuộc tính là bạn, nó sẽ ẩn
Thảo Phạm

đồng ý với @ThaoPham
jibin george
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.