আমি কীভাবে একটি টেস্ট.এফপি স্ক্রিপ্টে ম্যাজেন্টো 2 বুটস্ট্র্যাপ করতে পারি?


93

ম্যাজেন্টো 1 এ আমি এমন একটি ফাইল তৈরি করতে পারি যেখানে আমার কেবল Mage_Core_Model_Appক্লাসটি ইনস্ট্যান্ট করা দরকার এবং তারপরে আমি পরীক্ষার উদ্দেশ্যে আমার "নোংরা" কোডটি যুক্ত করতে পারি।
এরকম কিছু test.php:

<?php
//some settings
error_reporting(E_ALL | E_STRICT); 
define('MAGENTO_ROOT', getcwd()); 
$mageFilename = MAGENTO_ROOT . '/app/Mage.php'; 
require_once $mageFilename; 
Mage::setIsDeveloperMode(true); 
ini_set('display_errors', 1); 
umask(0);
//instantiate the app model
Mage::app(); 
//my toy code in here.

তারপরে আমি test.phpব্রাউজারে কল করতে এবং আমি কী করছি তা দেখতে সক্ষম হয়েছি।

আমি ম্যাজেন্টো 2-তে কীভাবে একই কাজ করতে পারি?


4
ম্যাজেন্টো 2 ক্রোন কীভাবে কাজ করে? আপনি কি একই পন্থা ব্যবহার করতে পারেন?
অ্যামাস্টি

4
ভাল আইডিয়া, কিন্তু ... কোড থেকে cron.php: $app = $bootstrap->createApplication('Magento\Framework\App\Cron', ['parameters' => ['group::']]);। আমার নিজের অ্যাপ্লিকেশন মডেলটি তৈরি করা উচিত?
মারিয়াস

1
একটি ইউনিট পরীক্ষা লিখুন
ক্রোস্টফ

2
@Fooman। উত্তর হিসাবে এটি নির্দ্বিধায় লিখুন, তবে দয়া করে একটি উদাহরণ সরবরাহ করুন। আমি একক ইউনিট পরীক্ষার জন্য নতুন।
Marius

উত্তর:


86

@ ফ্লাইংম্যানার উত্তরের ভিত্তিতে আমি কিছুটা খনন করেছি এবং একটি সমাধান নিয়ে এসেছি। এটা আমার জন্য কাজ seams।
প্রথমে আমার সমাধান, তারপরে কিছু ব্যাখ্যা।
আমি test.phpআমার ম্যাজেন্টো দৃষ্টান্তের মূলটিতে একটি ফাইল তৈরি করেছি ।

<?php
require __DIR__ . '/app/bootstrap.php';
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
/** @var \Magento\Framework\App\Http $app */
$app = $bootstrap->createApplication('TestApp');
$bootstrap->run($app);

তারপরে আমি TestApp.phpএই বিষয়বস্তু দিয়ে একই জায়গায় ডাকা একটি ফাইল তৈরি করেছি ।

<?php
class TestApp
    extends \Magento\Framework\App\Http
    implements \Magento\Framework\AppInterface {
    public function launch()
    {
        //dirty code goes here. 
        //the example below just prints a class name
        echo get_class($this->_objectManager->create('\Magento\Catalog\Model\Category'));
        //the method must end with this line
        return $this->_response;
    }

    public function catchException(\Magento\Framework\App\Bootstrap $bootstrap, \Exception $exception)
    {
        return false;
    }

}

এখন আমি কেবল test.phpব্রাউজারে কল করতে পারি এবং টেস্ট অ্যাপ :: লঞ্চ () তে স্থাপন করা সমস্ত কিছুই কার্যকর করা হবে।

এখন, কেন এটি কাজ করে: বুটস্ট্র্যাপ শ্রেণি থেকে প্রাপ্ত
পদ্ধতিটি createApplicationসবচেয়ে গুরুত্বপূর্ণ অংশ। এটি একটি অ্যাপ্লিকেশন শ্রেণির একটি উদাহরণ তৈরি করে। পদ্ধতিটি 2 টি পদ্ধতি রয়েছে এমন createApplicationএকটি বাস্তবায়ন প্রত্যাশা \Magento\Framework\AppInterfaceকরে।
সুতরাং আমি আমার নিজের ক্লাস তৈরি করেছি TestAppযে ইন্টারফেস প্রয়োগ করে। আমি পদ্ধতিটি সর্বদা catchExceptionফিরে falseআসি কারণ আমার অ্যাপ্লিকেশন ব্যতিক্রমগুলি পরিচালনা করতে চায় না। যদি কিছু ভুল হয় তবে কেবল এটি স্ক্রিনে মুদ্রণ করুন।
তারপরে আমি পদ্ধতিটি বাস্তবায়ন করেছি launch। এই এক দ্বারা বলা হয় \Magento\Framework\App\Bootstrap::run। এই runপদ্ধতিটি প্যারামিটার হিসাবে অ্যাপ্লিকেশনটি কীভাবে পাস করেছে তা প্রায় একই জিনিস করে।
অ্যাপ্লিকেশন উপর নির্ভর করে কেবলমাত্র এই লাইনটি:

$response = $application->launch();

এর অর্থ হ'ল কলিংয়ের \Magento\Framework\App\Bootstrap::runমাধ্যমে ম্যাজেন্টো এনভিয়েশন শুরু হবে (সম্ভবত কিছু অন্যান্য ক্রেজি স্টাফ করুন ... আমি এখনও সমস্ত কিছু পরীক্ষা করে দেখিনি) তারপরে launchঅ্যাপ্লিকেশন থেকে পদ্ধতিটি কল করে ।
এজন্য আপনাকে আপনার সমস্ত নোংরা কোডটি সেই পদ্ধতির ভিতরে রাখতে হবে।
তারপর \Magento\Framework\App\Bootstrap::runকল $response->sendResponse();যেখানে $responseকি launchপদ্ধতি আয়।
এজন্যই return $this->_response;দরকার। এটি কেবল একটি খালি প্রতিক্রিয়া দেয়।

আমি আমার অ্যাপ্লিকেশন ক্লাসটি প্রসারিত করেছি \Magento\Framework\App\Httpযাতে আমার কাছে ইতিমধ্যে অনুরোধ এবং প্রতিক্রিয়া প্যারামিটারগুলি (এবং অন্যদের) থাকবে তবে আপনি নিজের শ্রেণিকে কিছুই বাড়িয়ে দিতে পারবেন না। তারপরে আপনার \Magento\Framework\App\Httpক্লাস থেকে কনস্ট্রাক্টরটি অনুলিপি করতে হবে । আপনার যদি প্রয়োজন হয় তবে কন্সট্রাক্টরের আরও পরামিতি যুক্ত করুন।


2
অবশ্যই TestAppক্লাসটি একই test.phpফাইলে সংজ্ঞায়িত করা যেতে পারে তবে আমি এটিকে নোংরা করতে চাই না :)
মারিয়াস

আমাকে পদ্ধতির parent::launch();প্রথম লাইন launch()হিসাবে যুক্ত করতে হয়েছিল কারণ এটি আমাকে একটি "এরিয়া কোড সেট করা হয়নি" ত্রুটি দিয়েছিল
ওএসডেভ

@OSdave। এটি পরীক্ষা না করেই এটি কাজ করেছিল। সম্ভবত সর্বশেষতম সংস্করণে কিছু পরিবর্তন হয়েছে।
মারিয়াস

@ মারিয়াস, আমি সার্ভারের দ্রুত ইনস্টল করে ম্যাজেন্টো ইনস্টল করেছি। এবং অ্যাপে বুটস্ট্র্যাপ.এফপি নেই
er.irfankhan11

1
@ বাটারফ্লাই আপনার এটিকে আপনার কাস্টম নিয়ামকটিতে অন্তর্ভুক্ত করার দরকার নেই। আপনার কন্ট্রোলারে পৌঁছানোর আগে ফাইলটি সূচি.এফপি অন্তর্ভুক্ত হয়ে যায়।
Marius

54

দ্রুত / সংক্ষিপ্ত / নোংরা পরীক্ষার জন্য, আমি এরকম কিছু ব্যবহার করেছি:

use Magento\Framework\App\Bootstrap;
require __DIR__ . '/../app/bootstrap.php';

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

$obj = $bootstrap->getObjectManager();

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

$quote = $obj->get('Magento\Checkout\Model\Session')->getQuote()->load(1);
print_r($quote->getOrigData());

4
এইটা কাজ করে. অন্যান্য উত্তর না।
আহ্নবিজক্যাড

1
এটি আমার পাশে HTTP 500 টি ট্রিগার করে।
সর্বোচ্চ

এখনও 2.1.2 এ কাজ করে। আমাকে প্রয়োজনীয়-পথটি সংশোধন করতে হয়েছিল
সিমোথেসোরেরার

আমার জন্য কাজ করেনি
সরফরাজ সিপাই

20

@ মারিয়াসের উত্তরের ভিত্তিতে আমি এটি নিয়ে এসেছি।

এটি কমান্ড লাইনের পাশাপাশি ব্রাউজার উভয়ের মাধ্যমেই কাজ করে যা আমি দরকারী বলে মনে করি।

প্রোগ্রামগতভাবে বিভাগটি মোছার জন্য এখানে একটি নমুনা স্ক্রিপ্ট।

scripts/abstract.php

<?php
use \Magento\Framework\AppInterface as AppInterface;
use \Magento\Framework\App\Http as Http;

use Magento\Framework\ObjectManager\ConfigLoaderInterface;
use Magento\Framework\App\Request\Http as RequestHttp;
use Magento\Framework\App\Response\Http as ResponseHttp;
use Magento\Framework\Event;
use Magento\Framework\Filesystem;
use Magento\Framework\App\AreaList as AreaList;
use Magento\Framework\App\State as State;

abstract class AbstractApp implements AppInterface
{
    public function __construct(
        \Magento\Framework\ObjectManagerInterface $objectManager,
        Event\Manager $eventManager,
        AreaList $areaList,
        RequestHttp $request,
        ResponseHttp $response,
        ConfigLoaderInterface $configLoader,
        State $state,
        Filesystem $filesystem,
        \Magento\Framework\Registry $registry
    ) {
        $this->_objectManager = $objectManager;
        $this->_eventManager = $eventManager;
        $this->_areaList = $areaList;
        $this->_request = $request;
        $this->_response = $response;
        $this->_configLoader = $configLoader;
        $this->_state = $state;
        $this->_filesystem = $filesystem;
        $this->registry = $registry;
    }

    public function launch()
    {
        $this->run();
        return $this->_response;
    }

    abstract public function run();

    public function catchException(\Magento\Framework\App\Bootstrap $bootstrap, \Exception $exception)
    {
        return false;
    }
}

scripts/delete-category.php

<?php
require dirname(__FILE__) . '/../app/bootstrap.php';
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
require dirname(__FILE__) . '/abstract.php';

class CreateCategoriesApp extends AbstractApp
{

    public function run()
    {
        $this->_objectManager->get('Magento\Framework\Registry')
            ->register('isSecureArea', true);

        $category = $this->_objectManager->create('\Magento\Catalog\Model\Category');
        $category = $category->load(343);

        $category->delete();
    }
}

/** @var \Magento\Framework\App\Http $app */
$app = $bootstrap->createApplication('CreateCategoriesApp');
$bootstrap->run($app);

তারপর আমি ঠিক এটি চালানো php scripts/delete-category.php


2
সীমান্তের জন্য সূক্ষ্মভাবে কাজ করা, যদি আমি অ্যাডমিন কোডটি অ্যাক্সেস করতে চান তবে এটি ত্রুটি অ্যাক্সেস বা অঞ্চল সমস্যা দেখায়, আপনি কীভাবে অ্যাডমিন অঞ্চলে কল করতে পারেন তা বলতে পারেন
প্রদীপ কুমার

যখন কিছু কল করতে চাইছেন, আমি পাবেন: Magento\Framework\Exception\LocalizedException: Area code is not set। আমি কীভাবে সেট করতে পারি? আমার স্রোত দরকার।
সর্বোচ্চ

আমি ভয় পেয়েছি এই কোডটি লেখার পর থেকে আমি এম 2 এর দিকে খুব বেশি নজর দিইনি, কাঠামোর পরিবর্তনগুলি এটিকে অবৈধ করে দিয়েছে বা সংশোধন করার প্রয়োজন হয়েছে, দুঃখিত!
লুক রজার্স

18

আপনি কীভাবে একটি পরীক্ষা লিখতে পারেন তার একটি খুব ছোট উদাহরণের অনুরোধ হিসাবে (এটি আপনার ফোল্ডার এক্সটেনশন স্ট্রাকচারে না রেখে)। হায়রে এটি সমস্ত কমান্ড লাইন এবং ব্রাউজারের মাধ্যমে ব্যবহারের জন্য নয়।

ফাইল তৈরি করুন

dev/tests/unit/quicktest.php

সঙ্গে

<?php

class QuickTest extends \PHPUnit_Framework_TestCase
{
    public function testExample()
    {
        //instantiate your class
        $context = new Magento\Framework\Object();

        $context->setData('param', 'value');

        //test whatever you want to test
        $this->assertEquals('value', $context->getData('param'));

        //you could even output to console
        echo $context->getData('param');

    }
}

তারপরে ডিরেক্টরিটি dev/tests/unit/চালান phpunit quicktest.phpযা আপনার কোডটি কার্যকর করবে। ফাইলটি dev/tests/unit/phpunit.xml.distস্বয়ংক্রিয়ভাবে লোড হওয়ার পরে এবং পরিবেশ প্রস্তুত করার কারণে এটি সমস্ত কাজ করে।

অনেক ক্ষেত্রে আপনাকে ক্লাসগুলির নির্মাণকারীর কাছে ইনপুট সরবরাহ করতে হতে পারে। dev/tests/unit/testsuite/উপহাসের বিষয়গুলি সহ এটি কীভাবে দেখা যায় তার আরও উদাহরণের জন্য দয়া করে বিদ্যমান পরীক্ষাগুলি দেখুন।


1
আমি একটি "নোংরা" খেলার মাঠ চেয়েছিলাম। আপনি এখানে একটি পরিষ্কার একটি দিয়েছেন :)। আকর্ষণীয় ধারণা। আমি একবার চেষ্টা করবো।
মারিয়াস

7
আমি দেখতে পেয়েছি যে অতীতে আমি যে সময় একটি টেস্ট.এফপি তৈরি করেছিলাম সেই চেষ্টাটি সম্ভবত একটি পরীক্ষা লেখার ক্ষেত্রে চলে গিয়েছিল যার একটি চলমান উপকার হবে।
ক্রিস্টফ

15

পরীক্ষা সিস্টেমে ঝাঁকুনির চেয়ে এখানে আরও ভাল উপায়: ম্যাজেন্টো 2-র কমান্ড-লাইন ইন্টারফেসটি ব্যবহার করুন।

এর অর্থ এই নয় যে আপনাকে আপনার স্যান্ডবক্স কোডটি একটি আসল মডিউলে সংহত করতে হবে (বা উদ্দেশ্যটির জন্য একটি তৈরি করতে হবে) তবে আপনাকে যেভাবেই করা উচিত।

আপনার মডিউলটি সেট আপ হয়ে গেলে , একটি কমান্ড যুক্ত করা সহজ। এটি রেজিস্টার করার জন্য আপনার কেবল ক্লাস এবং ডিআইয়ের দরকার।

1. {মডিউল et /etc/di.xML

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <type name="Magento\Framework\Console\CommandList">
        <arguments>
            <argument name="commands" xsi:type="array">
                <item name="greeting_command" xsi:type="object">Magento\CommandExample\Console\Command\GreetingCommand</item>
            </argument>
        </arguments>
    </type>
</config>

2. {মডিউল} / কনসোল / কমন্ড / গ্রেটিংকম্যান্ড.এফপি

<?php

namespace Magento\CommandExample\Console\Command;

use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;

/**
 * Class GreetingCommand
 */
class GreetingCommand extends Command
{
    /**
     * {@inheritdoc}
     */
    protected function configure()
    {
        $this->setName('example:greeting')
             ->setDescription('Greeting command');

        parent::configure();
    }

    /**
     * {@inheritdoc}
     */
    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $output->writeln('<info>Hello world!</info>');
    }
}

Https://github.com/magento/magento2-sample/tree/master/sample-module-command থেকে প্রাপ্ত উদাহরণ - এই কার্যকারিতাটি সংযোজনে একটি সম্পূর্ণ মডিউল জন্য দেখুন। আছে কম তুচ্ছ উদাহরণ অন্তর্ভুক্ত করা হয়েছে।

কনভেনশন দ্বারা, আপনার কমান্ড বর্গ সর্বদা থাকা উচিত {module}/Console/Commandএবং এর সাথে শেষ হওয়া উচিত Command.php

একবার আপনি কোড (এবং রাঙা Magento ক্যাশে, ইত্যাদি) সেই দুই বিট জুড়েছেন, SSH- র নাম করে আপনার কমান্ড প্রয়োগ করুন: php bin/magento example:greeting

আপনি এই প্রসঙ্গে নির্ভরতা ইনজেকশন ব্যবহার করতে পারেন, যাতে আপনি নিজের মধ্যে যে কোনও কোড চালাতে পারেন execute()

এই ইন্টারফেসটি সিমফোনির কনসোল উপাদানটিতে নির্মিত হয়েছে , তাই বিকল্প / আর্গুমেন্ট , সারণী এবং খুব সহজ অগ্রগতি বার সহ আপনার বিস্তৃত পরিসরের কার্যকারিতাটিতেও আপনার সম্পূর্ণ অ্যাক্সেস রয়েছে ।

আপনি যদি আপনার কমান্ড বা বিকল্পগুলি সেট আপ করতে কোনও সমস্যায় পড়ে থাকেন তবে কী ঘটছে তা সম্পর্কে আরও ভাল দৃশ্যমানতা পেতে আপনি সাধারণত 'তালিকা' কমান্ডটি চালাতে পারেন: php bin/magento list

উপভোগ করুন।


নিস! বড় রফতানির সাথে স্ক্রিপ্টগুলির জন্য সিমফনির অগ্রগতি বারগুলি রয়েছে। ধন্যবাদ
urbansurfers

13

গুরুত্বপূর্ণ অংশটি হ'ল \Magento\Framework\App\Bootstrap::create

কিন্তু Bootstrap::init()পদ্ধতি ব্যক্তিগত, এবং গুরুত্বপূর্ণ জিনিস অনেক ঘটে, এটি আহ্বান প্রকাশ্য পদ্ধতি প্রয়োজন হয়।

একদিকে যেমন রয়েছে createApplication()এবং run()পদ্ধতিটি অনুসরণ করে তবে পদ্ধতি getDirList()এবং getObjectManager()পদ্ধতিও যা উভয়ের পক্ষে কোনও যুক্তির প্রয়োজন নেই।

সুতরাং কোনও অ্যাপ্লিকেশন প্রয়োজন হয় না, ডাউনসাইডগুলি হ'ল ত্রুটি হ্যান্ডলারটি আরম্ভ হয় না।


6

সম্ভবত অফ-টপিক, তবে আমি সর্বদা যোগাযোগগুলি সূচি নিয়ন্ত্রক ফাইলটি ম্যাজেন্টো 1-তে জিনিসগুলি পরীক্ষা করতে (সূচীকরণ পদ্ধতি) ব্যবহার করি। এটি উদাহরণ.কম্প্যাক্টে যাওয়ার মতোই সহজ। আপনাকে কেবল এই পরিবর্তনগুলি না করা নিশ্চিত করতে হবে;)

আমি নিশ্চিত যে আপনি ম্যাজেন্টো ২-তেও অনুরূপ কিছু করতে পারবেন বুটস্ট্র্যাপ কোড সহ একটি নতুন ফাইল তৈরি করা থেকে বাঁচায়।


1
স্বর্গ আপনাকে ভুলে যেতে নিষেধ করে, না এটি উত্পাদন করে! কোর কোডটি পরিবর্তন করবেন না দয়া করে।
রায়ান হোয়ের

@RyanH। হবে না। সংস্করণ নিয়ন্ত্রণ, স্বয়ংক্রিয় বিল্ডস, স্ট্যাটিক কোড বিশ্লেষণ, পিয়ার কোড পর্যালোচনা, মঞ্চায়ন / ব্যবহারকারী গ্রহণযোগ্যতা পরীক্ষা / ইত্যাদি etc তবে হ্যাঁ, আপনার যদি তা না থাকে, তবে এটির উত্পাদন শেষ হওয়ার সম্ভাবনা রয়েছে: পি
এরফান

1
এটি আপনার পক্ষে দুর্দান্ত তবে এখানে দেখার বেশিরভাগ লোকের এই ধরণের নিয়ন্ত্রণ থাকবে না। সর্বদা জিনিস করার সঠিক পদ্ধতি শেখানো (এবং করা) ভাল।
রায়ান হোয়ের 14

5

এই উত্তরটি মারিয়াসের উপরের উত্তরে সামান্য পরিবর্তন ification

কারণ ম্যাজেন্টো ২.১ এ Area code not setসেই কোডটি ব্যবহার করার সময় ত্রুটি পেয়েছিল ।So the intension of this answer is to fix that error on Magento 2.1

এই ত্রুটিটি সংশোধন করতে আপনাকে যা করতে হবে তা হল আপনার অঞ্চলের ক্ষেত্রটি নির্ধারণ করা test.php file। (নীচে পরিবর্তিত ফাইল দেখুন)।

<?php
require __DIR__ . '/app/bootstrap.php';
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
$obj = $bootstrap->getObjectManager();

$state = $obj->get('Magento\Framework\App\State');
$state->setAreaCode('frontend');
/** @var \Magento\Framework\App\Http $app */
$app = $bootstrap->createApplication('TestApp');
$bootstrap->run($app);

এবং TestApp.phpফাইলটি একই থাকবে।

<?php

class TestApp
    extends \Magento\Framework\App\Http
    implements \Magento\Framework\AppInterface {
    public function launch()
    {
        //dirty code goes here.
        $objectManager = \Magento\Framework\App\ObjectManager::getInstance();
        $product = $objectManager->get('Magento\Catalog\Model\Product')->load(71);
        var_dump($product->getData());

        return $this->_response;
    }

    public function catchException(\Magento\Framework\App\Bootstrap $bootstrap, \Exception $exception)
    {
        return false;
    }

}

এটি আমার জন্য ২.১..6-তেও কাজ করে না, আমি পেয়েছিUncaught TypeError: Argument 2 passed to Magento\\Framework\\App\\Http::__construct() must be an instance of Magento\\Framework\\Event\\Manager, none given
গেরিলা

5

আপনি কোডটি নীচে যুক্ত করে ম্যাজেন্টো রুটে স্ক্রিপ্টটি পরিচালনা করতে পারেন এবং বুটস্ট্র্যাপ অন্তর্ভুক্ত হবে .. [ম্যাজেন্টো রুট ফোল্ডারে টেস্ট.এফপি তৈরি করুন এবং নীচের কোডটি অন্তর্ভুক্ত করুন]

ini_set('display_errors', 1);
ini_set('max_execution_time', 0);
ini_set("memory_limit", "-1");
set_time_limit(0);
error_reporting(E_ALL);
require './app/bootstrap.php';
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
$objectManager = $bootstrap->getObjectManager();
$state = $objectManager->get('Magento\Framework\App\State');
$state->setAreaCode('admin');

আশা করি এটি সহায়ক হবে।


2

আপনি নীচের কোডটি ব্যবহার করে ম্যাজেন্টো 2 রুট থেকে সরাসরি স্ক্রিপ্টটি চালাতে পারেন। Magento 2 রুট ডিরেক্টরিতে একটি নতুন ফাইল তৈরি করুন এবং এই কোডটি যুক্ত করুন এবং এর পরে ফাইলটিতে আপনার স্ক্রিপ্ট যুক্ত করুন।

<?php
    use Magento\Framework\App\Bootstrap;
    include('app/bootstrap.php');
    $bootstrap = Bootstrap::create(BP, $_SERVER);

    $objectManager = $bootstrap->getObjectManager();

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

1

ম্যাজেন্টো ডিরেক্টরিটির বাইরে আমার কাস্টম স্ক্রিপ্টে ম্যাজেন্টোকে প্রাথমিকভাবে আনতে আমি যা করেছি তা এখানে।

//Required to include Magento functions.
$magento_dir "your/path/to/the/magento/installation/directory/";
require $magento_dir . 'app/bootstrap.php';
$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER);
//$app = $bootstrap->createApplication('Magento\Framework\App\Http');
$app = $bootstrap->createApplication('MyClass');
$bootstrap->run($app);

এটি ম্যাজেন্টো ডক্স অনুসারে প্রস্তাবিত উপায়। http://devdocs.magento.com/guides/v2.0/config-guide/bootstrap/magento-bootstrap.html

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.