Agregué un nuevo tipo de elemento de formulario llamado Company\Module\Data\Form\Element\PdfButton
, cuando lo es, version EE 2.0.7
y usé este elemento en una pestaña personalizada (agregada anulando Magento\Catalog\Block\Adminhtml\Product\Edit\Tabs
) de la página de administración de edición del producto.
Después de actualizar a Magento EE 2.1, la pestaña personalizada desapareció. Para que aparezca, agregué un modificador para crear una nueva pestaña en la página del producto. Agregué con éxito una nueva pestaña copiando el modificador en el archivo del proveedor e inyectándolo en mi módulo.
Pero, cuando quiero usar mi elemento personalizado. Entonces, en el campo secundario de la meta matriz, agregué el siguiente código:
$children[$website['id']] = [
'arguments' => [
'data' => [
'config' => [
'dataType' => Form\Element\DataType\Number::NAME,
'componentType' => Form\Field::NAME,
'formElement' => Form\Element\Wysiwyg2::NAME,
'description' => __($website['name']),
'tooltip' => $tooltip,
'sortOrder' => $sortOrder,
'dataScope' => 'website_ids.' . $website['id'],
'label' => "Pdf Upload",
'valueMap' => [
'true' => (string)$website['id'],
'false' => '0',
],
'value' => $isChecked ? (string)$website['id'] : '0',
],
],
],
];
después de esto, copié Form\Element\Wysiwyg
y lo pegué como Form\Element\Wysiwyg2
. En la clase Wysiwyg2 :
<?php
/**
* Copyright © 2016 Magento. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Ui\Component\Form\Element;
use Magento\Framework\Data\Form\Element\Editor;
use Magento\Framework\Data\Form;
use Magento\Framework\Data\FormFactory;
use Magento\Framework\DataObject;
use Magento\Framework\View\Element\UiComponent\ContextInterface;
use Magento\Ui\Component\Wysiwyg\ConfigInterface;
/**
* Class Input
*/
class Wysiwyg2 extends AbstractElement
{
const NAME = 'wysiwyg2';
/**
* @var Form
*/
protected $form;
/**
* @var Editor
*/
protected $editor;
/**
* @param ContextInterface $context
* @param FormFactory $formFactory
* @param ConfigInterface $wysiwygConfig
* @param array $components
* @param array $data
* @param array $config
*/
public function __construct(
ContextInterface $context,
FormFactory $formFactory,
ConfigInterface $wysiwygConfig,
array $components = [],
array $data = [],
array $config = []
) {
$wysiwygConfigData = isset($config['wysiwygConfigData']) ? $config['wysiwygConfigData'] : [];
$this->form = $formFactory->create();
$this->editor = $this->form->addField(
$context->getNamespace() . '_' . $data['name'],
'Magento\Framework\Data\Form\Element\Editor',
[
'force_load' => true,
'rows' => 20,
'name' => $data['name'],
'config' => $wysiwygConfig->getConfig($wysiwygConfigData),
'wysiwyg' => isset($config['wysiwyg']) ? $config['wysiwyg'] : null,
]
);
$data['config']['content'] = $this->editor->getElementHtml();
parent::__construct($context, $components, $data);
}
/**
* Get component name
*
* @return string
*/
public function getComponentName()
{
return static::NAME;
}}
Pero hay un error y no sé dónde debo agregar el nombre a eso.
1 exception(s):
Exception #0 (Magento\Framework\Exception\LocalizedException): The requested component ("wysiwyg2") is not found. Before using, you must add the implementation.
Exception #0 (Magento\Framework\Exception\LocalizedException): The requested component ("wysiwyg2") is not found. Before using, you must add the implementation.
#0 /var/www/vhosts/plchk/vendor/magento/module-ui/Model/Manager.php(207): Magento\Framework\View\Element\UiComponent\Config\Provider\Component\Definition->getComponentData('wysiwyg2')
#1 /var/www/vhosts/plchk/vendor/magento/framework/View/Element/UiComponentFactory.php(187): Magento\Ui\Model\Manager->createRawComponentData('wysiwyg2')
#2 /var/www/vhosts/plchk/vendor/magento/module-ui/Component/Form/Field.php(82): Magento\Framework\View\Element\UiComponentFactory->create(1, 'wysiwyg2', Array)
#3 /var/www/vhosts/plchk/vendor/magento/framework/View/Layout/Generator/UiComponent.php(148): Magento\Ui\Component\Form\Field->prepare()
#4 /var/www/vhosts/plchk/vendor/magento/framework/View/Layout/Generator/UiComponent.php(145): Magento\Framework\View\Layout\Generator\UiComponent->prepareComponent(Object(Magento\Ui\Component\Form\Field))
fuente