2016-12-04 83 views
0

開發人員,您好!如何添加填充到Symfony控制檯命令?

我要輸出的消息在我的控制檯命令看起來它是在教義控制檯命令來實現: enter image description here

我試圖添加換行符如下安慰使用PHP_EOL消息:

$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 . '</>'); 

結果可以在圖中看到: 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作爲第三個參數,該塊將與更多的填充(一個空白上面的行被格式化在消息的下面和左側和右側的2個空格處)。 (Formatter Helper

現在所有你應該執行是與所需的設計,以「輸出」對象傳遞您的塊:

$output->writeln($formattedInfoBlock); 

這裏是整個代碼一步一步:

/** 
* 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); 

現在,我的命令中的消息具有適當的類型。 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.