GithubHelp home page GithubHelp logo

jasonevans1 / magento-2-module-experius-form-select2 Goto Github PK

View Code? Open in Web Editor NEW

This project forked from experius/magento-2-module-experius-form-select2

0.0 1.0 0.0 36 KB

Select2 UI Component for Magento 2 with ajax search option

PHP 52.42% JavaScript 40.69% HTML 6.89%

magento-2-module-experius-form-select2's Introduction

Magento2 Module Select2 Ui Component

Select2 UI Component for Magento 2

Documentation

https://select2.github.io

Usage

You can control the select2 options with the xml in the select2 tags

Example Options

<item name="select2" xsi:type="array">
    <item name="maximumSelectionLength" xsi:type="string">3</item>
    <item name="tags" xsi:type="string">true</item>
    <item name="allowClear" xsi:type="string"">true</item>
</item>

Multiselect

<?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="FIELDSET_NAME">
        <field name="CUSTOM_FIELD">
            <argument name="data" xsi:type="array">
               <item name="options" xsi:type="object">Magento\Customer\Model\Customer\Attribute\Source\Group</item>
               <item name="config" xsi:type="array">
                   <item name="dataType" xsi:type="string">text</item>
                   <item name="label" translate="true" xsi:type="string">Customer Group</item>
                   <item name="formElement" xsi:type="string">multiselect</item>
                   <item name="source" xsi:type="string">Group</item>
                   <item name="sortOrder" xsi:type="number">40</item>
                   <item name="dataScope" xsi:type="string">group_id</item>
                   <item name="validation" xsi:type="array">
                       <item name="required-entry" xsi:type="boolean">true</item>
                   </item>
                   <item name="elementTmpl" xsi:type="string">Experius_FormSelect2/form/element/multiselect2</item>
                   <item name="component" xsi:type="string">Experius_FormSelect2/js/form/element/multiselect2</item>
                   <item name="select2" xsi:type="array">
                       <item name="tags" xsi:type="string">true</item>
                   </item>
               </item>
           </argument>
        </field>
    </fieldset>
</form>

Select

<?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="FIELDSET_NAME">
        <field name="CUSTOM_FIELD">
            <argument name="data" xsi:type="array">
               <item name="options" xsi:type="object">Magento\Customer\Model\Customer\Attribute\Source\Group</item>
               <item name="config" xsi:type="array">
                   <item name="dataType" xsi:type="string">text</item>
                   <item name="label" translate="true" xsi:type="string">Customer Group</item>
                   <item name="formElement" xsi:type="string">select</item>
                   <item name="source" xsi:type="string">Group</item>
                   <item name="sortOrder" xsi:type="number">40</item>
                   <item name="dataScope" xsi:type="string">group_id</item>
                   <item name="validation" xsi:type="array">
                       <item name="required-entry" xsi:type="boolean">true</item>
                   </item>
                   <item name="elementTmpl" xsi:type="string">Experius_FormSelect2/form/element/select2</item>
                   <item name="component" xsi:type="string">Experius_FormSelect2/js/form/element/select2</item>
                   <item name="select2" xsi:type="array">
                       <item name="maximumSelectionLength" xsi:type="string">1</item>
                       <item name="tags" xsi:type="string">true</item>
                   </item>
               </item>
           </argument>
        </field>
    </fieldset>
</form>

Ajax Search Select

<item name="select2" xsi:type="array">
    <item name="maximumSelectionLength" xsi:type="string">1</item>
    <item name="tags" xsi:type="string">true</item>
    <item name="ajax" xsi:type="array">
        <item name="url" xsi:type="string">/admin/formselect2/ajax/search</item>
        <item name="search" xsi:type="string">ProductSearch</item> <!-- Uses virtual model productsearch -->
    </item>
</item>

Ajax Virtual Search Model Example (di.xml)

  <virtualType name="Experius\FormSelect2\Model\Virtual\ProductSearch" type="Experius\FormSelect2\Model\Search">
         <arguments>
             <argument name="searchData" xsi:type="array">
                 <item name="modelCollectionClass" xsi:type="string">Magento\Catalog\Model\ResourceModel\Product\Collection</item>
                 <item name="modelClass" xsi:type="string">Magento\Catalog\Model\Product</item>
                 <item name="searchFields" xsi:type="array">
                     <item name="sku" xsi:type="string">sku</item>
                     <item name="name" xsi:type="string">name</item>
                 </item>
                 <item name="modelType" xsi:type="string">eav</item>
                 <item name="modelKey" xsi:type="string">entity_id</item>
                 <item name="sortByAttribute" xsi:type="string">name</item>
             </argument>
         </arguments>
     </virtualType>

Credits

Inspired by https://github.com/weprovide/magento2-module-select2-uicomponent
Jquery select2 lib by https://select2.github.io/

magento-2-module-experius-form-select2's People

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.