Slik oppretter du egendefinerte multiselekt kundeelementer i Magento 2 og butikkalternativer i databasen

Innholdsfortegnelse

  1. Introduksjon
  2. Hva er egendefinerte multiselektelementer?
  3. Trinn for å opprette egendefinerte multiselektelementer for kunder
  4. Administrere egendefinert multiselektelement
  5. Konklusjon
  6. FAQ

Introduksjon

Opprettelse av egendefinerte attributter for kunder i Magento 2 kan i stor grad forbedre fleksibiliteten og funksjonaliteten til e-handelsplattformen din. Mens det finnes forskjellige typer egendefinerte attributter man kan opprette, er multiselektattributtet spesielt nyttig for å fange opp flere verdier for en enkelt attributt. Imidlertid overser ofte opplæringsprogrammene og guide hvordan man lagrer disse alternativene i databasen. I denne artikkelen vil vi utforske grundig hvordan du oppretter et egendefinert multiselektelement for kunder i Magento 2 og sikrer at alternativene lagres effektivt i databasen.

Hva er egendefinerte multiselektelementer?

I Magento 2 utvider kundeelementer kjernefunksjonen til plattformen ved å tillate at tilleggsinformasjon om kunder fanges opp og brukes. Et multiselektelement gjør det mulig for kunder å velge flere alternativer for en enkelt felt, noe som gjør det ideelt for scenarier som valg av interesser, foretrukne kommunikasjonskanaler eller produktpreferanser.

Å lagre alternativene for multiselektelementet direkte i databasen i stedet for i filer gir flere fordeler, som enklere datamanegeement, forbedret skalerbarhet og bedre ytelse.

Trinn for å opprette egendefinerte multiselektelementer for kunder

Trinn 1: Oppsett av modulen

Først må du sette opp en ny modul. Dette innebærer å opprette de nødvendige katalogene og konfigurasjonsfilene:

  1. Katalogstruktur
    • app/code/Vendor/CustomMultiselect
    • app/code/Vendor/CustomMultiselect/registration.php
    • app/code/Vendor/CustomMultiselect/etc/module.xml
    • app/code/Vendor/CustomMultiselect/Setup/InstallData.php
    • app/code/Vendor/CustomMultiselect/Model/Attribute/Source/Options.php

registration.php

<?php
use Magento\Framework\Component\ComponentRegistrar;

ComponentRegistrar::register(
    ComponentRegistrar::MODULE,
    'Vendor_CustomMultiselect',
    __DIR__
);

module.xml

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
    <module name="Vendor_CustomMultiselect" setup_version="1.0.0"/>
</config>

Trinn 2: Opprettelse av InstallData-skriptet

Skriptet InstallData.php vil håndtere opprettelsen av den egendefinerte attributten under modulens installasjonsprosess. Bruk Magento 2 InstallData-grensesnittet til dette formålet.

InstallData.php

<?php
namespace Vendor\CustomMultiselect\Setup;

use Magento\Eav\Setup\EavSetup;
use Magento\Eav\Setup\EavSetupFactory;
use Magento\Framework\Setup\InstallDataInterface;
use Magento\Framework\Setup\ModuleContextInterface;
use Magento\Framework\Setup\ModuleDataSetupInterface;
use Magento\Customer\Model\Customer;

class InstallData implements InstallDataInterface
{
    private $eavSetupFactory;

    public function __construct(EavSetupFactory $eavSetupFactory)
    {
        $this->eavSetupFactory = $eavSetupFactory;
    }

    public function install(ModuleDataSetupInterface $setup, ModuleContextInterface $context)
    {
        $eavSetup = $this->eavSetupFactory->create(['setup' => $setup]);

        $eavSetup->addAttribute(
            Customer::ENTITY,
            'custom_multiselect',
            [
                'type' => 'varchar',
                'label' => 'Egendefinert multiselektelement',
                'input' => 'multiselect',
                'source' => 'Vendor\CustomMultiselect\Model\Attribute\Source\Options',
                'required' => false,
                'visible' => true,
                'user_defined' => true,
                'sort_order' => 1000,
                'position' => 1000,
                'system' => 0,
                'backend' => 'Magento\Eav\Model\Entity\Attribute\Backend\ArrayBackend',
            ]
        );

        $attribute = $eavSetup->getEavConfig()->getAttribute(Customer::ENTITY, 'custom_multiselect')
            ->addData(['used_in_forms' => [
                'adminhtml_customer',
                'customer_account_create',
                'customer_account_edit',
            ]]);

        $attribute->save();
    }
}

Trinn 3: Legge til egendefinerte alternativer

I dette trinnet vil vi opprette en kilde-modell for alternativene til den egendefinerte attributten, slik at de blir lagret i databasen som nødvendig.

Options.php

<?php
namespace Vendor\CustomMultiselect\Model\Attribute\Source;

use Magento\Eav\Model\Entity\Attribute\Source\AbstractSource;

class Options extends AbstractSource
{
    public function getAllOptions()
    {
        if (!$this->_options) {
            $this->_options = [
                ['label' => __('Standard'), 'value' => 'standard'],
                ['label' => __('Test'), 'value' => 'test'],
                ['label' => __('Test2'), 'value' => 'test2'],
            ];
        }
        return $this->_options;
    }
}

Trinn 4: Verifisering av lagring i databasen

For å sikre at alternativene blir lagret i databasen, verifiser den nye attributten i tabellene eav_attribute og eav_attribute_option. Magento 2-installasjonsskriptet skal ha opprettet oppføringer for den nye multiselektelementattributten, og alternativene skal være oppført i de riktige tabellene.

Administrere egendefinert multiselektelement

Slik kan du administrere det egendefinerte multiselektelementet fra Magento 2-administrasjonspanelet:

  • Administrasjonspanelhåndtering:

    • Naviger til Kunder > Alle kunder.
    • Rediger en eksisterende kunde eller opprett en ny.
    • Bla ned til seksjonen for egendefinerte attributter og sjekk om multiselektelementet er tilgjengelig.
    • Verifiser at valgene lagres og hentes korrekt fra databasen.
  • Frontend-håndtering:

    • Attributtet kan vises og administreres på kontoopprettelses- og redigeringskjemaene for kunder, slik at kundeinndata behandles og lagres korrekt.

Konklusjon

Ved å opprette et egendefinert multiselektelement i Magento 2 og sikre at alternativene lagres i databasen kan du betydelig forbedre evnen til å fange opp kompleks kundeinformasjon. Å følge trinnene som er beskrevet her, vil ikke bare forenkle prosessen, men også sikre robust og skalerbart håndtering av data. Ved å utnytte disse funksjonene kan din Magento 2-butikk bli mer interaktiv, effektiv og brukervennlig.

FAQ

Hva er egendefinerte kundeelementer i Magento 2?

Egendefinerte kundeelementer lar deg legge til ekstra felter i kundens informasjon, slik at mer data kan brukes til personlige opplevelser og målrettet markedsføring.

Hvorfor lagre multiselektalternativer i databasen?

Å lagre multiselektalternativer i databasen forenkler administrasjonen, gir bedre ytelse og forbedret skalerbarhet sammenlignet med lagring i filsystemer.

Kan jeg legge til flere alternativer for multiselektattributtet etter opprettelsen?

Ja, det er mulig å legge til flere alternativer ved å oppdatere kilde-modellen og kjøre oppsettskriptet på nytt for å gjenspeile endringene i databasen.