Преобразование кода начальной загрузки из Magento 1 в Magento 2 для управления продуктами - PullRequest
0 голосов
/ 04 марта 2019

У меня есть код, который я использовал на нашем старом сайте Magento 1 для обновления продуктов.Мы перешли на Magento 2, и мне нужно конвертировать код.Я не PHP-разработчик и не Magento-разработчик, но я программист, поэтому, хотя я могу читать код, я не могу его написать.Я надеюсь, что кто-то здесь может помочь мне сделать окончательное преобразование кода.

В версии Magento 1 был этот загрузчик:

include_once("app/Mage.php");
Mage::app();
umask(0);
Mage::app()->setCurrentStore(Mage::getModel('core/store')->load(Mage_Core_Model_App::ADMIN_STORE_ID));

$counter = 0;

У меня были функции, которые абстрагировали быGetProduct и SaveProduct код для меня:

function GetProduct($sku)
{
    global $counter;
    echo $sku;
    $p = Mage::getModel('catalog/product');
    $productId = $p -> getIdBySku($sku);       
    if($productId)
    {
        echo "!";
        $p -> load( $productId );
    }
    else
    {
        $p->setTypeId('simple');
        $p->setVisibility(Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH); 
        $p->setStatus(1);
        $p->setTaxClassId(7);
        $p->setWebsiteIDs(array(1)); 
        $p->setStoreIDs(array(1)); 
        $p->setAttributeSetId(4);
        $p->setSku($sku);
    }
    echo "...";
    $counter++;
    echo " ".$counter;
    return $p;
}

function SaveProduct($p)
{
    try
    {
        if (is_array($errors = $p->validate()))
        {
            $strErrors = array();
            foreach($errors as $code=>$error)
            {
                $strErrors[] = ($error === true)? Mage::helper('catalog')->__('Attribute "%s" is invalid.', $code) : $error;
                echo $strErrors[0];
            }
            $this->_fault('data_invalid', implode("\n", $strErrors));
        }
        $p->save();
        echo "\n";
    }
    catch (Mage_Core_Exception $e)
    {
        $this->_fault('data_invalid', $e->getMessage());
    }
}

Этот код позволил мне сделать такие вещи:

$product = GetProduct('MOJFABL02'); $product->setData('upc', '00228633'); SaveProduct($product); unset($product);
$product = GetProduct('COLTWCP16SIL'); $product->setData('upc', '011179322862'); SaveProduct($product); unset($product);
$product = GetProduct('CONPAS001CP'); $product->setData('upc', '011179520770'); SaveProduct($product); unset($product);
$product = GetProduct('COLDEDC01RED'); $product->setData('upc', '780984516338'); SaveProduct($product); unset($product);
$product = GetProduct('NCHFAPP07'); $product->setData('upc', '9311965111955'); SaveProduct($product); unset($product);
$product = GetProduct('COLTWCP10RBL'); $product->setData('upc', '9311965320555'); SaveProduct($product); unset($product);

Это позволило быстро и легко обновить продукты.

Я нашел следующий код начальной загрузки Magento 2:

use Magento\Framework\App\Bootstrap;

require __DIR__ . '/app/bootstrap.php';

$params = $_SERVER;

$bootstrap = Bootstrap::create(BP, $params);

$obj = $bootstrap->getObjectManager();

$state = $obj->get('Magento\Framework\App\State');
$state->setAreaCode('frontend');

И это прекрасно работает с этим кодом:

$p = $obj->get('Magento\Catalog\Model\Product');
$productId = $p -> getIdBySku("LOLINV001");

echo($productId);

$p -> load( $productId );

echo($p->getName());

Мне просто не хватает знаний и умения конвертироватьGetProduct и SaveProduct.

Могу я попросить помощи в конвертации, пожалуйста?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...