system.xml Magento 2で入力タグを作成する方法にdisable属性があります


7

私のsystem.xml場合、次のようなフィールドタグがあります。

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

構成で入力を無効にするためにフィールドタグに追加する必要がある属性は何ですか?

ありがとう

回答:


21

<frontend_model>はあなたのために次のように働くと思います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_modelクラスは

<?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

Keyur Shahの答えは正しいですが、無効化された要素の値をコピーすることはできないことがわかりました。だから書く代わりに書く$element->setDisabled('disabled'); ことができます$element->setData('readonly', 1);。これによりフィールドは同じように表示されますが、値をマークしてコピーすることができます。


3

これは、system.xml(Magento / Config / etc / system.xsd)の現在のXSDではサポートされていません。

一度にすべてのタイプのフィールドに対してこのような動作を有効にするには、要素の\Magento\Config\Block\System\Config\Form\Field::render()新しいtype値をサポートするように(たとえば、プラグインを使用して)拡張することができattributeます。

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

現時点ではtypeattribute要素の任意の値を指定できますが、shared処理されるのは値のみです\Magento\Config\Block\System\Config\Form::_getSharedCssClass()。を参照してください。同様の処理を新しいプラグインに追加して、要素attributeが指定されている場合に要素を無効にすることができます。


0

フィールドを無効にする別の方法は、env.phpファイルに値を設定することです。env.phpを使用すると、デフォルトで構成を設定し、env.phpファイルにマップされているフィールドを無効にすることができます。管理ユーザーが構成を変更できませんでした。センシティブな設定をしたい場合は非常に便利です。

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

-3

すべてのshow *フィールドを0に設定してみてください

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

1
入力タグを無効にしたいのですが、属性を自分で設定すると非表示になります
Thao Pham

@ThaoPhamに同意する
ジョージjibin
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.