回答:
私<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();
}
}
Keyur Shahの答えは正しいですが、無効化された要素の値をコピーすることはできないことがわかりました。だから書く代わりに書く$element->setDisabled('disabled');
ことができます$element->setData('readonly', 1);
。これによりフィールドは同じように表示されますが、値をマークしてコピーすることができます。
これは、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>
現時点ではtype
、attribute
要素の任意の値を指定できますが、shared
処理されるのは値のみです\Magento\Config\Block\System\Config\Form::_getSharedCssClass()
。を参照してください。同様の処理を新しいプラグインに追加して、要素attribute
が指定されている場合に要素を無効にすることができます。