我正在玩symfony控制檯包,我正在執行該命令時詢問一個值,也就是public function execute(...)
。Symfony控制檯「詢問」將不會接受空值
當試圖向用戶詢問某件事情時,我發現如果不製作自己的自定義樣式,它有兩種不同的方法。 a)使用問題助手,b)使用預定義的樣式,特此SymfonyStyle
我開始使用SymfonyStyle
運行一個簡單的ask("question here")
,並且如果我沒有給它賦值,它會一直給我錯誤。如果我使用幫手,直接創建問題,那麼它會允許我給它一個空值。
下面是一些例子:
# SomeCommand.php
namespace What\A\Command;
use Symfony\Component\Console\Question\Question;
use Symfony\Component\Console\Style\SymfonyStyle;
// ...
public function execute(InputInterface $input, OutputInterface $output)
{
// ...
// With the helper, which allows empty answer
$helper = $this->getHelper('question');
$q = new Question('Question here');
dump($helper->ask($input, $output, $q));
// Output:
// Question here
// null
// With SymfonyStyle which DOES NOT allow empty answer
$io = new SymfonyStyle($input, $output);
dump($io->ask("Question here"));
// Output:
// Question here:
// [ERROR] A value is required.
}
展望的SymfonyStyle
文件,它看起來像它並沒有做太多的不同與驗證所有的,因爲該類說,這只是造型。 那麼有什麼我缺少這是兩者之間的區別?是否有可能使SymfonyStyle
完全接受空答案?
是的,與SymfonyStyle輸入似乎是強制性的,而不是使用默認值。檢查SymfonyQuestionHelper類 – Matteo
啊,沒有注意到它沒有直接使用Question類,謝謝指導我。我發現'SymfonyQuestionHelper'需要一個有效的值。現在我知道如何繼續讓它變成空的,但也保持相同的風格而不會破壞乾燥:)謝謝,@Matteo! – Morten
嗨@Morten歡迎您! – Matteo