2016-12-04 11 views
0

デベロッパー、こんにちは!Symfonyコンソールコマンドにパディングを追加するには?

$output->writeln('<bg=green>' . PHP_EOL. 'The statistics of ' . $affiliateProgramName . ' for period from ' . 
    $beginningDate->format('Y-m-d') . ' to ' . $endDate->format('Y-m-d') . ' has been downloaded.' . PHP_EOL . '</>'); 
を:

私は私のコンソールコマンドで出力メッセージにしたい、それがDoctrineのコンソールコマンドで実装されているように見える次のよう enter image description here

私は行を追加しようとしましたがPHP_EOLを使用してメッセージをコンソールに破ります

結果は画像で見ることができます: enter image description here

背景がコンソールの全幅に伸び、私はgを持っていませんDoctrineコマンドのようなパディング。

ご意見はありますか?ありがとう!

答えて

2

Six03、先端に感謝!もちろん、私はそれを十分な答えと見なすことはできませんが、必要なすべての情報を見つけるのに役立ちました。

まず、あなたはContainerAwareCommandオブジェクトのプロパティとして文脈「フォーマッタ」でヘルパーを宣言する必要があります。

$formatter = $this->getHelper('formatter'); 

次にあなたがコンソールに表示されるコンテンツを持つ配列を宣言する必要があります。配列の各要素は、メッセージの新しい行です。次に、あなたはこのような宣言「フォーマッター」のブロックにあなたのメッセージや、あなたのスタイルを追加する必要があります。

$infoMessage = array('INFO:', 'Date interval is ' . $interval->format('%a') . ' days.'); 
$formattedInfoBlock = $formatter->formatBlock($infoMessage, 'info', TRUE); 

あなたは第三引数としてtrueを渡すと、ブロックは上記よりパディング(1空白行でフォーマットされますメッセージの下に、左右に2つのスペースがあります)。 (Formatter Helper

そして今、あなたが行うべきことは、すべてが「出力」オブジェクトに必要なデザインで、あなたのブロックを渡すことです:

/** 
* Setting the console styles 
* 
* 'INFO' style 
*/ 
$infoStyle = new OutputFormatterStyle('white', 'blue'); 
$output->getFormatter()->setStyle('info', $infoStyle); 

/** 
* 'SUCCESS' style 
*/ 
$successStyle = new OutputFormatterStyle('white', 'green'); 
$output->getFormatter()->setStyle('success', $successStyle); 

/** 
* Declaring the formatter 
*/ 
$formatter = $this->getHelper('formatter'); 

/** 
* The output to the console 
*/ 
$infoMessage = array('INFO:', 'Date interval is ' . $interval->format('%a') . ' days.'); 
$formattedInfoBlock = $formatter->formatBlock($infoMessage, 'info', TRUE); 
$output->writeln($formattedInfoBlock); 
:ここ

$output->writeln($formattedInfoBlock); 

は、ステップによって、全体のコードステップであります

私のコマンドのメッセージは適切な種類です。 enter image description here

1

私はこれを見つけましたが、おそらくこれがあなたが探しているものです。

/** 
* Formats a message as a block of text. 
* 
* @param string|array $messages The message to write in the block 
* @param string|null $type  The block type (added in [] on first line) 
* @param string|null $style The style to apply to the whole block 
* @param string  $prefix The prefix for the block 
* @param bool   $padding Whether to add vertical padding 
*/ 
public function block($messages, $type = null, $style = null, $prefix = ' ', $padding = false) 
{ 
    $messages = is_array($messages) ? array_values($messages) : array($messages); 
    $this->autoPrependBlock(); 
    $this->writeln($this->createBlock($messages, $type, $style, $prefix, $padding, true)); 
    $this->newLine(); 
} 

You can find the entire file here.

関連する問題