Sådan oprettes brugerdefinerede multivælgervægtoplysninger i Magento 2 og opbevar valgmulighederne i databasen

Indholdsfortegnelse

  1. Introduktion
  2. Hvad er brugerdefinerede multivælgeroplysninger?
  3. Trin til oprettelse af brugerdefinerede multivælgervægtoplysninger
  4. Håndtering af den brugerdefinerede multivælgerattribut
  5. Konklusion
  6. FAQ

Introduktion

Oprettelse af brugerdefinerede attributter for kunder i Magento 2 kan væsentligt forbedre både fleksibiliteten og funktionaliteten i din e-handelsplatform. Mens der kan oprettes forskellige typer brugerdefinerede attributter, er den multivælgerattribut særligt fordelagtig til at optage flere værdier for en enkelt attribut. Imidlertid overser vejledninger og guider ofte de nødvendige trin for at gemme disse valgmuligheder i databasen. I denne artikel vil vi udforske, hvordan du opretter en brugerdefineret multivælgervægtoplysning for kunder i Magento 2 og sikrer, at dens valgmuligheder opbevares effektivt i databasen.

Hvad er brugerdefinerede multivælgeroplysninger?

I Magento 2 udvider kundeattributter platformens kernefunktion ved at tillade, at der kan indsamles og udnyttes yderligere oplysninger om kunder. En multivælgerattribut giver kunderne mulighed for at vælge flere muligheder for et enkelt felt, hvilket gør det ideelt til scenarier som valg af interesser, foretrukne kommunikationskanaler eller produktpreferencer.

At gemme multivælgerattributoplysninger direkte i databasen i stedet for filer har flere fordele, såsom lettere håndtering af data, forbedret skalerbarhed og bedre ydeevne.

Trin til oprettelse af brugerdefinerede multivælgervægtoplysninger

Trin 1: Opsætning af modulet

Først skal du oprette et nyt modul. Dette indebærer oprettelse af de nødvendige mapper og konfigurationsfiler:

  1. Mappesystem
    • 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>

Trin 2: Oprettelse af InstallData-scriptet

Scriptet InstallData.php vil håndtere oprettelsen af den brugerdefinerede attribut under modulets installationsproces. Brug Magento 2 InstallData-grænsefladen til dette formål.

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' => 'Brugerdefineret multivælgerattribut',
                '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();
    }
}

Trin 3: Tilføjelse af brugerdefinerede valgmuligheder

I dette trin opretter vi en kilde for brugerdefinerede attributvalgmuligheder, så de opbevares i databasen som nødvendigt.

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;
    }
}

Trin 4: Verificering af databaselagring

For at sikre, at valgmulighederne opbevares i databasen, skal du kontrollere den nye attribut i tabelerne eav_attribute og eav_attribute_option. Installationsscriptet til Magento 2 burde have oprettet indgange for din nye multivælgerattribut, og dens valgmuligheder bør være angivet i de relevante tabeller.

Håndtering af den brugerdefinerede multivælgerattribut

Sådan kan du administrere den brugerdefinerede multivælgerattribut fra Magento 2-administrationspanelet:

  • Administrationspanelet:

    • Gå til Kunder > Alle kunder.
    • Rediger en eksisterende kunde eller opret en ny.
    • Rul ned til afsnittet Brugerdefinerede attributter og kontroller, om multivælgerattributten er tilgængelig.
    • Bekræft, at valgene gemmes korrekt og hentes fra databasen.
  • Frontendstyring:

    • Attributten kan vises og administreres på kundekontos oprettelses- og redigeringsformularer for at sikre, at kundens input behandles og gemmes korrekt.

Konklusion

Ved at oprette en brugerdefineret multivælgerattribut i Magento 2 og sikre, at dens valgmuligheder opbevares i databasen, kan du væsentligt forbedre din evne til at indsamle komplekse kundeoplysninger. Ved at følge trinnene, der er beskrevet her, forenkler du ikke kun processen, men sikrer også en solid og skalerbar håndtering af data. Ved at udnytte disse muligheder kan din Magento 2-butik blive mere interaktiv, effektiv og brugervenlig.

FAQ

Hvad er brugerdefinerede kundeattributter i Magento 2?

Brugerdefinerede kundeattributter giver dig mulighed for at tilføje yderligere felter til kundens oplysninger, så der kan indsamles flere data, der kan bruges til personaliserede oplevelser og målrettet markedsføring.

Hvorfor gemme multivælgerindstillingerne i databasen?

Ved at gemme multivælgerindstillinger i databasen letter det lettere håndtering af data, forbedret ydeevne og forbedret skalerbarhed i forhold til at gemme dem i filsystemerne.

Kan jeg tilføje flere valgmuligheder til en multivælgerattribut efter oprettelsen?

Ja, yderligere valgmuligheder kan tilføjes ved at opdatere kilde modellen og køre installationskriptet igen for at afspejle ændringerne i databasen.