Berikut cara yang lebih baik daripada menghubungkan ke sistem pengujian: Gunakan antarmuka baris perintah Magento 2.
Ini berarti Anda harus mengintegrasikan kode kotak pasir Anda ke dalam modul yang sebenarnya (atau membuatnya untuk tujuan itu), tetapi Anda tetap harus melakukannya.
Setelah Anda mengatur modul , menambahkan perintah cukup mudah. Yang Anda butuhkan hanyalah kelas, dan DI untuk mendaftarkannya.
1. {module} /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. {module} /Console/Command/GreetingCommand.php
<?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>');
}
}
Contoh berasal dari https://github.com/magento/magento2-samples/tree/master/sample-module-command - lihat di sana untuk modul lengkap yang menggabungkan fungsi ini. Ada contoh-contoh yang kurang sepele disertakan.
Dengan konvensi, kelas perintah Anda harus selalu berada {module}/Console/Command
, dan diakhiri dengan Command.php
.
Setelah Anda menambahkan dua bit kode (dan cache Magento memerah, dll.), Jalankan perintah Anda dengan nama di SSH: php bin/magento example:greeting
.
Anda bisa menggunakan injeksi ketergantungan dalam konteks ini, sehingga Anda bisa menjalankan kode apa pun yang Anda inginkan execute()
.
Antarmuka ini dibangun di atas komponen Konsol Symfony , sehingga Anda juga memiliki akses penuh ke semua fungsionalitas yang luas itu, termasuk opsi / argumen , tabel , dan bilah kemajuan yang sangat mudah .
Jika Anda mengalami masalah dalam mengatur perintah atau opsi, Anda biasanya dapat menjalankan perintah 'daftar' untuk mendapatkan visibilitas yang lebih baik mengenai apa yang salah: php bin/magento list
Nikmati.