2016-05-20 3 views
3

Я создаю пользовательский виджет на magento 2, и я хочу использовать поле для текста как (textarea). я пытаюсь использовать:Magento 2, пользовательский виджет, добавить параметр как textarea

parameter name="text" xsi:type="textarea" visible="true" sort_order="3"

Но я получил эту ошибку: The QName значения «» текстового поля в XSI: атрибут типа не разрешает определение типа.

Как я могу использовать текстовое поле в поле виджетов, на magento 2?

Спасибо

ответ

7

В поле вы хотите быть текстовое поле для ввода = блок, например:

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



} 
+0

Вы, сэр, являетесь чемпионом. Именно то, что мне нужно и прекрасно работает. Спасибо тебе за это –

Смежные вопросы