J'apprends le composant UI.
Je veux ajouter une section personnalisée dans le formulaire de modification / ajout de produit pour le produit
J'ai créé les fichiers suivants.
fournisseur / module / vue / adminhtml / ui_component / product_form.xml
<?xml version="1.0" encoding="UTF-8"?>
<form xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
<fieldset name="mobile">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="label" xsi:type="string" translate="true">Time</item>
<item name="provider" xsi:type="string">product</item>
<item name="dataScope" xsi:type="string">data.product</item>
<item name="sortOrder" xsi:type="number">2</item>
<item name="collapsible" xsi:type="boolean">true</item>
<item name="opened" xsi:type="boolean">false</item>
<item name="ns" xsi:type="string">product_form</item>
</item>
</argument>
<container name="monday_time_group">
<argument name="data" xsi:type="array">
<item name="type" xsi:type="string">group</item>
<item name="config" xsi:type="array">
<item name="additionalClasses" xsi:type="string">admin__control-grouped-date</item>
<item name="component" xsi:type="string">Magento_Ui/js/form/components/group</item>
<item name="label" xsi:type="string" translate="true">Monday</item>
<item name="required" xsi:type="boolean">false</item>
<item name="sortOrder" xsi:type="number">220</item>
<item name="breakLine" xsi:type="boolean">false</item>
<item name="scopeLabel" xsi:type="string">[STORE VIEW]</item>
</item>
</argument>
<field name="monday_design_from">
<argument name="data" xsi:type="array">
<item name="options" xsi:type="object">Vendor\Module\Model\Config\Source\TimeSetup</item>
<item name="config" xsi:type="array">
<item name="label" xsi:type="string" translate="true">Monday</item>
<item name="additionalClasses" xsi:type="string">admin__field-date</item>
<item name="sortOrder" xsi:type="number">230</item>
<item name="dataType" xsi:type="string">string</item>
<item name="formElement" xsi:type="string">select</item>
</item>
</argument>
</field>
<field name="monday_design_to">
<argument name="data" xsi:type="array">
<item name="options" xsi:type="object">Vendor\Module\Model\Config\Source\TimeSetup</item>
<item name="config" xsi:type="array">
<item name="additionalClasses" xsi:type="string">admin__field-date</item>
<item name="sortOrder" xsi:type="number">240</item>
<item name="dataType" xsi:type="string">string</item>
<item name="formElement" xsi:type="string">select</item>
</item>
</argument>
</field>
</container>
</fieldset>
</form>
Fournisseur \ Module \ Model \ Config \ Source \ TimeSetup.php
<?php
namespace Vendor\Module\Model\Config\Source;
class TimeSetup extends \Magento\Eav\Model\Entity\Attribute\Source\AbstractSource
{
protected $_optionsData;
/**
* getAllOptions
*
* @return array
*/
public function getAllOptions()
{
if ($this->_options === null) {
$this->_options = [
['value' => 'one', 'label' => __('one')],
['value' => 'two', 'label' => __('two')]
];
}
return $this->_options;
}
final public function toOptionArray()
{
return array(
array('value' => 'one', 'label' => __('one')),
array('value' => 'two', 'label' => __('two'))
);
}
}
Il s'affiche correctement dans le backend comme je le souhaitais, mais lorsque vous essayez d'enregistrer le produit, il ne sauvegarde pas cette valeur de champ.
Dois-je créer l'attribut " monday_time_group "? Est-ce la bonne façon de le faire? Comment puis-je obtenir la valeur de ceci en frontend pour le produit?
MISE À JOUR:
J'ai créé l'attribut monday_time_group mais ne fonctionne toujours pas.
uicomponent
magento2.1.5
product-edit
Kaushal Suthar
la source
la source
Réponses:
Bon enfin j'ai résolu ça par moi-même voici le code complet de mon module ...
registration.php
etc / module.xml
Setup / InstallData.php
Model \ Config \ Source \ TimeSetup.php
view / adminhtml / ui_component / product_form.xml
En utilisant le code ci-dessus, l'enregistrement des données correctement, le seul problème auquel je suis confronté maintenant est que ces attributs apparaissent dans la section générale ainsi que dans ma section personnalisée créée qui est "Groupe de test". CSS.
la source
D'après ce que je vois ici, vos attributs n'ont rien de spécial.
Ils sont réguliers.
Vous pouvez simplement ajouter les attributs
monday_design_from
,monday_design_from
et les placer dans un groupe distinct.Je vous recommande de le faire via du code et non manuellement car je suppose que vous aurez de la logique sur ces attributs.
Voici un exemple sur la façon dont vous pouvez le faire: https://magento.stackexchange.com/a/162115/146
La seule chose que vous devez changer si vous voulez que vos attributs apparaissent dans une section distincte est d'ajouter dans le tableau de configuration ce
la source
Solution parfaite disponible ici:
Ajouter un nouvel onglet dans la page de modification du produit dans l'administrateur Magento 2
vous pouvez trouver une solution pour n'importe quelle version de magento2
la source