【问题标题】:Magento 2, custom widget, add parameter as textareaMagento 2,自定义小部件,将参数添加为 textarea
【发布时间】:2016-09-17 15:50:27
【问题描述】:

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

参数名称="text" xsi:type="textarea" visible="true" sort_order="3"

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

如何在 magento 2 上的小部件字段上使用 textarea?

谢谢

【问题讨论】:

    标签: parameters textarea magento2


    【解决方案1】:

    将你想成为文本区域的字段设置为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> 
    

    现在创建新块“TextField.php”,如下所示:

    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;
    }
    
    
    
    }
    

    【讨论】:

    • 您先生,是冠军。正是我所需要的并且完美地工作。谢谢你
    • 它似乎没有保留换行符。有没有办法让它保留输入到 textarea 中的换行符?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-07
    • 2014-04-08
    • 2015-11-19
    • 1970-01-01
    • 2013-03-23
    • 1970-01-01
    相关资源
    最近更新 更多