Magento 2,自定义小部件,添加参数为textarea

时间:2016-05-20 11:35:19

标签: parameters textarea magento2

我在magento 2上创建了一个自定义小部件,我想使用文本字段作为(textarea)。 我尝试使用:

  

参数名称="文字"的xsi:type =" textarea的"可见=#&34;真"   SORT_ORDER =" 3"

但是我收到了这个错误: QName值' textarea' xsi:type属性不解析为类型定义。

如何在magento 2上的widget字段上使用textarea?

谢谢

1 个答案:

答案 0 :(得分:15)

将您想要成为文本区域的字段设置为type = block,例如:

<parameter name="text" xsi:type="block" required="true" visible="true" sort_order="3">
            <label translate="true">Text</label>

            <block class="Namespace\Modulename\Block\Adminhtml\Widget\TextField"/>
        </parameter> 

现在创建新块&#34; TextField.php&#34;,如下所示:

namespace Namespace\Modulename\Block\Adminhtml\Widget;
Class TextField extends \Magento\Backend\Block\Template{
protected $_elementFactory;
/**
 * @param \Magento\Backend\Block\Template\Context $context
 * @param \Magento\Framework\Data\Form\Element\Factory $elementFactory
 * @param array $data
 */
public function __construct(
    \Magento\Backend\Block\Template\Context $context,
    \Magento\Framework\Data\Form\Element\Factory $elementFactory,
    array $data = []
) {
    $this->_elementFactory = $elementFactory;
    parent::__construct($context, $data);
}
/**
 * Prepare chooser element HTML
 *
 * @param \Magento\Framework\Data\Form\Element\AbstractElement $element Form Element
 * @return \Magento\Framework\Data\Form\Element\AbstractElement
 */
public function prepareElementHtml(\Magento\Framework\Data\Form\Element\AbstractElement $element)
{
    $input = $this->_elementFactory->create("textarea", ['data' => $element->getData()]);
    $input->setId($element->getId());
    $input->setForm($element->getForm());
    $input->setClass("widget-option input-textarea admin__control-text");
    if ($element->getRequired()) {
        $input->addClass('required-entry');
    }

    $element->setData('after_element_html', $input->getElementHtml());
    return $element;
}



}