PHP code example of fortrabbit / yii2-artisan-bridge

1. Go to this page and download the library: Download fortrabbit/yii2-artisan-bridge library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

fortrabbit / yii2-artisan-bridge example snippets


 namespace you\PluginName;

use Craft;
use craft\base\Plugin as BasePlugin;
use fortrabbit\Yii2ArtisanBridge\ActionGroup;
use fortrabbit\Yii2ArtisanBridge\Bridge;
use you\PluginName\actions\ActionOne;
use you\PluginName\actions\ActionTwo;

/**
 * Class Plugin
 */
class Plugin extends BasePlugin
{
    /**
     * Initialize Plugins
     */
    public function init()
    {
        parent::init();

        if (Craft::$app instanceof \yii\console\Application) {

            $group = (new ActionGroup('group-name', 'What this group is about.'))
                ->setActions([
                    'action1'  => ActionOne::class,
                    'action2'  => ActionTwo::class,
                ])
                ->setDefaultAction('action1')
                ->setOptions([
                    'one' => 'option-one',
                    'two' => 'option-two',
                    'option-without-alias'
                ]);
            
            Bridge::registerGroup($group);
        }
    }
}


 namespace you\PluginName\actions;

use Craft;
use fortrabbit\Yii2ArtisanBridge\base\Action as BaseAction;
use yii\console\ExitCode;

class ActionOne extends BaseAction {

    public $optionOne = 'default-value';
    
    /**
      * Ask some question
      *
      * @param string $name
      * @return bool
      */
    public function run($name) {
    
        $this->title("Hello {$name}, 'option-one' is '{$this->optionOne}'");
        
        $answer = $this->choice("What's your favorite animal?", ['Dog','Cat','Elephant']);
        
        if ($answer === 'Elephant') {
            $this->successBlock("'$answer' is correct.");
            return ExitCode::OK;
        } else {
            $this->errorBlock("'$answer' is the wrong.");
            return ExitCode::UNSPECIFIED_ERROR;
        }
    
    }
}   

$name = $this->ask('What is your name?', $default = null)`

$name = $this->anticipate('What is your name?', ['Taylor', 'Fabien', 'Brad', 'Brandon']);

if ($this->confirm('Do you wish to continue?')) {
    // continue
}

$this->info('Display this on the screen');
$this->error('Something went wrong!');

$headers = ['Name', 'Email'];
$rows    = [['First name', 'First email'], ['Second name', 'Second email']];

$this->table($headers, $rows);

$this->title('Title style block');
$this->section('Section style block');
$this->listing(['One','Two','Three'];

$this->successBlock('Yeah!');
$this->errorBlock('Oh no!');

// Custom blocks
$this->block($messages, $type = null, $style = null, $prefix = ' ', $padding = true, $escape = true);


$items = range(1,10);

$bar = $this->output->createProgressBar(count($items));

// Custom format
$bar->setFormat('%message%' . PHP_EOL . '%bar% %percent:3s% %' . PHP_EOL . 'time:  %elapsed:6s%/%estimated:-6s%' . PHP_EOL.PHP_EOL);
$bar->setBarCharacter('<info>'.$bar->getBarCharacter().'</info>');
$bar->setBarWidth(80);

foreach ($items as $i) {
    sleep(1);
    $bar->advance();
    $bar->setMessage("My bar, some progress... $i");
}

$bar->finish();

// in your init()
\yii\base\Event::on(
    Commands::class,
    Commands::EVENT_BEFORE_ACTION,
    function (ActionEvent $event) {
        $style = new OutputFormatterStyle('white', 'cyan');
        $event->action->output->getFormatter()->setStyle('ocean', $style);
    }
);

$this->title('Title in <ocean>blue</ocean>');