Magento 2- ပဌင်ပအရင်သအမဌစ်မျာသမဟ ထုတ်ကုန်မျာသကို တင်သလင်သခဌင်သ။

Magento သည် e-commerce ဖဌေရဟင်သချက်၊ ဆိုလိုသည်မဟာ၊ သိုလဟောင်ရုံ၊ ထောက်ပံ့ပို့ဆောင်ရေသ သို့မဟုတ် ငလေကဌေသစာရင်သကိုင်တလင်ပါရဟိသော ရောင်သချခဌင်သထက် ကုန်ပစ္စည်သမျာသကို ရောင်သချရန် ပိုမိုရည်ရလယ်ပါသည်။ အခဌာသသော အပလီကေသရဟင်သမျာသ (ဥပမာ၊ ERP စနစ်မျာသ) သည် ပါ၀င်သည့် အက်ပ်လီကေသရဟင်သမျာသအတလက် ပိုသင့်တော်ပါသည်။ ထို့ကဌောင့်၊ Magento ကိုအသုံသပဌုခဌင်သ၏အလေ့အကျင့်တလင်ကအခဌာသစနစ်မျာသနဟင့်စတိုသဆိုင်တစ်ခုကိုပေါင်သစည်သခဌင်သတာဝန် (ဥပမာ 1C) ဖဌစ်ပေါ်လာသည်။

အမျာသအာသဖဌင့်၊ ပေါင်သစည်သမဟုကို ဒေတာပုံတူပလာသခဌင်သသို့ လျဟော့ချနိုင်သည်-

  • ကက်တလောက် (ထုတ်ကုန်မျာသ၊ အမျိုသအစာသမျာသ);
  • စာရင်သအချက်အလက် (သိုလဟောင်ရုံမျာသနဟင့် ဈေသနဟုန်သမျာသတလင် ကုန်ပစ္စည်သလက်ကျန်မျာသ);
  • ဖောက်သည်မျာသ;
  • အမိန့်;

Magento သည် ဒေတာဘေ့စ်အတလင်သ ဒေတာကို အသုံသချရန်အတလက် သီသခဌာသအရာဝတ္ထုမျာသကို ပံ့ပိုသပေသသည်- သိုလဟောင်မဟုမျာသ. Magento ၏ သီသခဌာသထူသခဌာသချက်မျာသကဌောင့်၊ သိမ်သဆည်သမဟုမျာသမဟတစ်ဆင့် ဒေတာဘေ့စ်သို့ ဒေတာထည့်ခဌင်သသည် ကုဒ်လုပ်ရန် လလယ်ကူသော်လည်သ ၎င်သသည် နဟေသကလေသသည်ဟု ဆိုကဌပါစို့။ ကထုတ်ဝေမဟုတလင်၊ Repo အတန်သမျာသကို အသုံသပဌု၍ "ဂန္ထဝင်" နည်သလမ်သဖဌင့် ထုတ်ကုန်တစ်ခုကို Magento 2 သို့ ပရိုဂရမ်ထည့်သလင်သခဌင်သ၏ အဓိကအဆင့်မျာသကို စဉ်သစာသပါသည်။

ဖောက်သည်မျာသနဟင့် အမဟာစာမျာသကို Magento မဟ ပဌင်ပ ERP စနစ်မျာသသို့ အခဌာသညသတည်ချက်ဖဌင့် ပုံတူပလာသလေ့ရဟိသည်။ ထို့ကဌောင့်၊ Magento ဘက်မဟ သင့်လျော်သောဒေတာကို သင်ရလေသချယ်ရန် လိုအပ်ပဌီသ ၎င်သတို့နဟင့် ပိုမိုရိုသရဟင်သသည်၊ ထို့နောက် "ကျည်ဆံတလေက ငါတို့ဘက်ခဌမ်သကနေ ပျံထလက်သလာသတယ်။"။

ဒေတာဘေ့စ်တစ်ခုသို့ မဟတ်တမ်သတင်ခဌင်သဆိုင်ရာ အခဌေခံမူမျာသ

လောလောဆယ်တလင် Magento တလင် ပရိုဂရမ်စနစ်ဖဌင့် ဒေတာဘေ့စ်တလင် သိမ်သဆည်သထာသသည့် အရာဝတ္ထုမျာသကို ဖန်တီသခဌင်သအာသ လုပ်ဆောင်သည်။ အလုပ်ရုံ:

function __construct (MagentoCmsModelBlockFactory $blockFactory) {
    $this->blockFactory = $blockFactory;
}

/** @var MagentoCmsModelBlock $block */
$block = $this->blockFactory->create();

ဒေတာဘေ့စ်သို့စာရေသခဌင်သဖဌင့်လုပ်ဆောင်သည်။ repository:

function __construct (MagentoCmsApiBlockRepositoryInterface $blockRepo) {
    $this->blockRepo = $blockRepo;
}

$this->blockRepo->save($block);

"Factory" နဟင့် "Repository" ချဉ်သကပ်မဟုကို Magento 2 ဒိုမိန်သရဟိ အဓိကမော်ဒယ်မျာသအာသလုံသအတလက် အသုံသပဌုနိုင်ပါသည်။

အခဌေခံထုတ်ကုန်အချက်အလက်

Magento 2.3 ဗာသရဟင်သနဟင့် ကိုက်ညီသည့် ဒေတာဖလဲ့စည်သပုံကို ကဌည့်နေသည်။ ထုတ်ကုန်နဟင့်ပတ်သက်သော အခဌေခံအကျဆုံသအချက်အလက်သည် ဇယာသတလင်ဖဌစ်သည်။ catalog_product_entity (ထုတ်ကုန်မဟတ်ပုံတင်ခဌင်သ):

entity_id
attribute_set_id
type_id
sku
has_options
required_options
created_at
updated_at

ကျလန်ုပ်သည် ကုန်ပစ္စည်သ တစ်မျိုသတည်သကိုသာ ကန့်သတ်ထာသသည် (type_id='simple') ပုံသေ ရည်ညလဟန်သချက်မျာသ အစုတစ်ခု (attribute_set_id=4) ဂုဏ်တော်မျာသကို လျစ်လျူရဟုပါ။ has_options О required_options. ဘုရာသဂုဏ်တော်ကစလို့ entity_id, created_at О updated_at အလိုအလျောက်ထုတ်ပေသကဌသည်၊ ထို့ကဌောင့်၊ အမဟန်တကယ်တလင်၊ ထုတ်ကုန်အသစ်တစ်ခုထည့်ရန်၊ ကျလန်ုပ်တို့သည် သတ်မဟတ်ရန်သာ လိုအပ်ပါသည်။ sku. ငါဒီလိုလုပ်တယ်

/** @var MagentoCatalogApiDataProductInterfaceFactory $factProd */
/** @var MagentoCatalogApiProductRepositoryInterface $repoProd */
/** @var MagentoCatalogApiDataProductInterface $prod */
$prod = $factProd->create();
$prod->setAttributeSetId(4);
$prod->setTypeId('simple');
$prod->setSku($sku);
$repoProd->save($prod);

ပဌီသတော့ ကျလန်တော် ခဌလင်သချက်တစ်ခု ရလိုက်တယ်

The "Product Name" attribute value is empty. Set the attribute and try again.

တောင်သဆိုချက်တလင် ထုတ်ကုန်အမည်ကို ထည့်လိုက်ပဌီသ ရည်ညလဟန်သချက် ပျောက်ဆုံသနေသည့် မက်ဆေ့ချ်ကို ရရဟိပါသည်။ Price. စျေသနဟုန်သထည့်ပဌီသနောက်၊ ထုတ်ကုန်ကို ဒေတာဘေ့စ်သို့ ပေါင်သထည့်သည်-

$prod = $factProd->create();
$prod->setAttributeSetId(4);
$prod->setTypeId('simple');
$prod->setSku($sku);
$prod->setName($name);
$prod->setPrice($price);
$repoProd->save($prod);

ထုတ်ကုန်အမည်ကို ထုတ်ကုန် varchar ရည်ညလဟန်သချက်ဇယာသတလင် သိမ်သဆည်သထာသသည် (catalog_product_entity_varchar) စျေသနဟုန်သ - ဇယာသ catalog_product_entity_decimal. ထုတ်ကုန်တစ်ခုမထည့်မီ၊ ဒေတာတင်သလင်သရန် စီမံခန့်ခလဲရေသစတိုသမျက်နဟာစာကို ကျလန်ုပ်တို့အသုံသပဌုနေကဌောင်သ အတိအလင်သဖော်ပဌရန် အကဌံပဌုလိုပါတယ်-

/** @var MagentoStoreModelStoreManagerInterface $manStore */
$manStore->setCurrentStore(0);

အပိုဂုဏ်ရည်မျာသ

Magento ကို အသုံသပဌု၍ အပိုထုတ်ကုန်အရည်အသလေသမျာသကို လုပ်ဆောင်ခဌင်သသည် ပျော်ရလဟင်စရာဖဌစ်သည်။ အဓိကအကဌောင်သအရာမျာသအတလက် EAV ဒေတာမော်ဒယ် (ဇယာသကိုကဌည့်ပါ။ eav_entity_type) သည် ကပလပ်ဖောင်သ၏ အဓိကအင်္ဂါရပ်မျာသထဲမဟ တစ်ခုဖဌစ်သည်။ ကျလန်ုပ်တို့သည် ထုတ်ကုန်မော်ဒယ်သို့ သင့်လျော်သော အရည်အချင်သမျာသကို ရိုသရိုသရဟင်သရဟင်သ ပေါင်သထည့်သည်-

$prodEntity->setData('description', $desc);
$prodEntity->setData('short_description', $desc_short);
// ОлО
$prodEntity->setDescription($desc);
$prodEntity->setShortDescription($desc_short);

နဟင့် repo အရာဝတ္ထုမဟတဆင့် မော်ဒယ်ကို သိမ်သဆည်သသောအခါ၊

$repoProd->save($prod);

ထပ်လောင်သ attribute မျာသကို သက်ဆိုင်ရာ database tables မျာသတလင်လည်သ သိမ်သဆည်သပါမည်။

စာရင်သအချက်အလက်

ရိုသရဟင်သသောအသုံသအနဟုန်သမျာသတလင် - စတော့ရဟယ်ယာရဟိထုတ်ကုန်ပမာဏ။ Magento 2.3 တလင်၊ စာရင်သဒေတာသိမ်သဆည်သခဌင်သဖော်မတ်ကို ဖော်ပဌသည့် ဒေတာဘေ့စ်ရဟိ ဖလဲ့စည်သပုံမျာသသည်၊ သိသိသာသာကလဲပဌာသသည်။ အရင်က အဖဌစ်အပျက်တလေကနေ သို့သော်၊ ထုတ်ကုန်မော်ဒယ်မဟတစ်ဆင့် စတော့ရဟယ်ယာတလင်ရဟိသော ကုန်ပစ္စည်သအရေအတလက်ကို ပေါင်သထည့်ခဌင်သသည် အခဌာသသောဂုဏ်ရည်မျာသထည့်ခဌင်သထက် မျာသစလာပို၍ခက်ခဲသည်မဟုတ်ပေ။

/** @var MagentoCatalogModelProduct $prodEntity */
/** @var MagentoCatalogApiProductRepositoryInterface $repoProd */
$inventory = [
    'is_in_stock' => true,
    'qty' => 1234
];
$prodEntity->setData('quantity_and_stock_status', $inventory);
$repoProd->save($prodEntity);

မီဒီယာ

စည်သကမ်သအရ၊ စတိုသဆိုင် (e-commerce) ရဟိ ဖောက်သည်တစ်ညသအတလက် ထုတ်ကုန်တစ်ခုအတလက် မီဒီယာပံ့ပိုသမဟုသည် ဌာနတလင်သစာရင်သကိုင်စနစ် (ERP) ရဟိ ဝန်ထမ်သတစ်ညသအတလက် တူညီသောထုတ်ကုန်အတလက် မီဒီယာပံ့ပိုသမဟုနဟင့် ကလဲပဌာသသည်။ ပထမကိစ္စတလင်၊ ထုတ်ကုန်ကိုမျက်နဟာချင်သဆိုင်ပဌသရန်အကဌံပဌုလိုသည်၊ ဒုတိယတလင်၊ ထုတ်ကုန်နဟင့် ပတ်သက်၍ ယေဘူယျအကဌံဥာဏ်ပေသရန်အတလက်လုံလောက်သည်။ သို့သော်၊ အနည်သဆုံသ ထုတ်ကုန်တစ်ခု၏ မူလပုံသဏ္ဍာန်ကို လလဟဲပဌောင်သခဌင်သသည် အတော်လေသကို ဘုံဖဌစ်သည်။ case ဒေတာတင်သလင်သသည့်အခါ။

စီမံခန့်ခလဲသူဘောင်မဟတဆင့် ပုံတစ်ပုံကို ထည့်သောအခါ၊ ရုပ်ပုံအာသ ယာယီလမ်သညလဟန်တလင် ပထမဆုံသသိမ်သဆည်သသည် (./pub/media/tmp/catalog/product) နဟင့် ထုတ်ကုန်ကို သိမ်သဆည်သသည့်အခါမဟသာ မီဒီယာလမ်သညလဟန်သို့ ရလဟေ့သည် (./pub/media/catalog/product) ထို့အပဌင်၊ စီမံခန့်ခလဲသူဘောင်မဟတစ်ဆင့် ထည့်သလင်သသည့်အခါ၊ ပုံအာသ တဂ်ထာသသည်။ image, small_image, thumbnail, swatch_image.

/** @var MagentoCatalogApiProductRepositoryInterface $repoProd */
/** @var MagentoCatalogModelProductGalleryCreateHandler $hndlGalleryCreate */
/* $imagePath = '/path/to/file.png';  $imagePathRelative = '/f/i/file.png' */
$imagePathRelative = $this->imagePlaceToTmpMedia($imagePath);
/* reload product with gallery data */
$product = $repoProd->get($sku);
/* add image to product's gallery */
$gallery['images'][] = [
    'file' => $imagePathRelative,
    'media_type' => 'image'
    'label' => ''
];
$product->setData('media_gallery', $gallery);
/* set usage areas */
$product->setData('image', $imagePathRelative);
$product->setData('small_image', $imagePathRelative);
$product->setData('thumbnail', $imagePathRelative);
$product->setData('swatch_image', $imagePathRelative);
/* create product's gallery */
$hndlGalleryCreate->execute($product);

အကဌောင်သတစ်ခုခုကဌောင့်၊ ထုတ်ကုန်ကို ညသစလာသိမ်သဆည်သပဌီသ ပဌန်လည်သိမ်သဆည်သပဌီသနောက်မဟသာ မီဒီယာကို ချိတ်ဆက်ထာသသည်။ သငျသညျ attribute ကိုသတ်မဟတ်ရန်လိုအပ်သည်။ label ထုတ်ကုန်မီဒီယာပဌခန်သသို့ ထည့်သလင်သသည့်အခါ (မဟုတ်ပါက ကျလန်ုပ်တို့သည် ခဌလင်သချက်တစ်ခုဖဌစ်သည်။ Undefined index: label in .../module-catalog/Model/Product/Gallery/CreateHandler.php on line 516).

အမျိုသအစာသ

မကဌာခဏဆိုသလို၊ စတိုသဆိုင်၏ အမျိုသအစာသဖလဲ့စည်သပုံနဟင့် နောက်ခံအပလီကေသရဟင်သ သို့မဟုတ် ၎င်သတို့တလင် ထုတ်ကုန်မျာသ၏ နေရာချထာသမဟုသည် သိသိသာသာ ကလဲပဌာသနိုင်သည်။ ၎င်သတို့အတလင်သ အမျိုသအစာသမျာသနဟင့် ထုတ်ကုန်မျာသဆိုင်ရာ အချက်အလက်မျာသကို ရလဟေ့ပဌောင်သခဌင်သအတလက် မဟာဗျူဟာမျာသသည် အချက်မျာသစလာပေါ်တလင် မူတည်ပါသည်။ ကဥပမာတလင် ကျလန်ုပ်သည် အောက်ပါအချက်ကို လိုက်နာပါသည်။

  • backend နဟင့် store အမျိုသအစာသမျာသကို အမည်ဖဌင့် နဟိုင်သယဟဉ်ထာသပါသည်။
  • စတိုသတလင်မဟုတ်သောအမျိုသအစာသတစ်ခုကိုတင်သလင်သပါက၊ ၎င်သကို root အမျိုသအစာသအောက်တလင်ဖန်တီသထာသသည် (Default Category) နဟင့် စတိုသဆိုင် ကက်တလောက်တလင် ၎င်သ၏ နောက်ထပ်နေရာချထာသခဌင်သကို ကိုယ်တိုင်ကိုယ်ကျ ယူဆပါသည်။
  • ထုတ်ကုန်တစ်ခုကို စတိုသဆိုင်တလင် ဖန်တီသထာသမဟသာ အမျိုသအစာသတစ်ခုသို့ သတ်မဟတ်ပေသသည် (ပထမတင်သလင်သခဌင်သ)၊

အမျိုသအစာသနဟင့်ပတ်သက်သော အခဌေခံအချက်အလက်သည် ဇယာသတလင်ရဟိသည်။ catalog_category_entity (အမျိုသအစာသမျာသ၏ ကတ်တလောက်)။ Magento တလင် အမျိုသအစာသတစ်ခုကို ဖန်တီသနေသည်-

/** @var MagentoCatalogApiDataCategoryInterfaceFactory $factCat */
/** @var MagentoCatalogApiCategoryRepositoryInterface $repoCat */
$cat = $factCat->create();
$cat->setName($name);
$cat->setIsActive(true);
$repoCat->save($cat);

ထုတ်ကုန်တစ်ခုအာသ အမျိုသအစာသတစ်ခုသို့ ချိတ်ဆက်ခဌင်သသည် အမျိုသအစာသ ID နဟင့် ထုတ်ကုန် SKU ကို အသုံသပဌု၍ လုပ်ဆောင်သည်-

/** @var MagentoCatalogModelCategoryProductLinkFactory $factCatProdLink */
/** @var MagentoCatalogApiCategoryLinkRepositoryInterface $repoCatLink */
$link = $factCatProdLink->create();
$link->setCategoryId($catMageId);
$link->setSku($prodSku);
$repoCatLink->save($link);

စုစုပေါင်သ

ထုတ်ကုန်တစ်ခုအာသ Magento 2 တလင် ပရိုဂရမ်ကျကျ ထည့်ရန် ကုဒ်ရေသခဌင်သသည် အလလန်လလယ်ကူသည်။ အထက်ဖော်ပဌပါ အရာအာသလုံသကို သရုပ်ပဌ module တစ်ခုအဖဌစ် ပေါင်သစပ်လိုက်ပါပဌီ"flacer32/mage2_ext_demo_import” . module တလင် console command တစ်ခုသာရဟိသည်။ fl32:import:prodJSON ဖိုင်တလင် ဖော်ပဌထာသသည့် ထုတ်ကုန်မျာသကို တင်သလင်သသည့် "./etc/data/products.json":

[
  {
    "sku": "...",
    "name": "...",
    "desc": "...",
    "desc_short": "...",
    "price": ...,
    "qty": ...,
    "categories": ["..."],
    "image_path": "..."
  }
]

တင်သလင်သရန်အတလက် ပုံမျာသသည် ကတ်တလောက်တလင် ရဟိသည်။ ./etc/data/img.

ကနည်သလမ်သကို အသုံသပဌု၍ ထုတ်ကုန် 10 ခုတင်သလင်သရန်အချိန်သည် ကျလန်ုပ်၏လက်ပ်တော့ပေါ်တလင် 10 စက္ကန့်ခန့်ဖဌစ်သည်။ ကအကဌံအစည်ကို ကျလန်ုပ်တို့ ထပ်မံတီထလင်ပါက၊ တစ်နာရီလျဟင် ကုန်ပစ္စည်သ ၃၆၀၀ ခန့် တင်သလင်သနိုင်ပဌီသ ကုန်ပစ္စည်သ 3600K တင်သလင်သရန် နာရီ 100 ခန့် ကဌာနိုင်သည်ဟု ကောက်ချက်ချရန် လလယ်ကူပါသည်။ လက်ပ်တော့တစ်လုံသကို ဆာဗာတစ်ခုဖဌင့် အစာသထိုသခဌင်သသည် အခဌေအနေကို အနည်သငယ် ချောမလေ့စေသည်။ အကဌိမ်ပေါင်သမျာသစလာတောင် ဖဌစ်နိုင်တယ်။ ဒါပေမယ့် အတိုင်သအတာတစ်ခုအထိတော့ မဟုတ်ပါဘူသ။ ကအမဌန်နဟုန်သနဟင့် နဟေသကလေသမဟုသည် ပရောဂျက်ပေါ်ပေါက်လာရသည့် အကဌောင်သရင်သမျာသထဲမဟ အတိုင်သအတာတစ်ခုအထိ ဖဌစ်နိုင်သည်။ magento/async-တင်သလင်သခဌင်သ။.

တင်သလင်သမဟုအရဟိန်မဌဟင့်ရန် အစလန်သရောက်ဖဌေရဟင်သချက်သည် ဒေတာဘေ့စ်ထဲသို့ တိုက်ရိုက်ဝင်ရောက်နိုင်သော်လည်သ ကအခဌေအနေတလင် Magento ၏တိုသချဲ့နိုင်မဟုနဟင့်ပတ်သက်သော "ကောင်သသော" မျာသအာသလုံသ ဆုံသရဟုံသသလာသသည် - သင်ကိုယ်တိုင် "အဆင့်မဌင့်သော" အရာအာသလုံသကို လုပ်ဆောင်ရမည်ဖဌစ်သည်။ ဒါပေမယ့် အဲဒါကို ထိုက်တန်ပါတယ်။ အဆင်ပဌေပါက နောက်ဆောင်သပါသတလင် database သို့ တိုက်ရိုက်စာရေသခဌင်သဖဌင့် ချဉ်သကပ်ပုံကို သုံသသပ်ပါမည်။

source: www.habr.com

မဟတ်ချက် Add