Innholdsfortegnelse
- Introduksjon
- Hva er egendefinerte multiselektelementer?
- Trinn for å opprette egendefinerte multiselektelementer for kunder
- Administrere egendefinert multiselektelement
- Konklusjon
- 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:
-
Katalogstruktur
app/code/Vendor/CustomMultiselectapp/code/Vendor/CustomMultiselect/registration.phpapp/code/Vendor/CustomMultiselect/etc/module.xmlapp/code/Vendor/CustomMultiselect/Setup/InstallData.phpapp/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.