我有一個可以有各種鍵的數組。但是,總是存在兩個必需的鍵。我現在使用OptionsResolver組件。這是工作正常,直到沒有任何額外的密鑰。我也考慮過驗證器組件,據我瞭解,這是相同的行爲。所以我需要總是設置完整的鍵列表,但正如我上面寫的,我只需要驗證其中的一些。有沒有辦法解決這個問題?OptionsResolver組件和額外選項
謝謝!
我有一個可以有各種鍵的數組。但是,總是存在兩個必需的鍵。我現在使用OptionsResolver組件。這是工作正常,直到沒有任何額外的密鑰。我也考慮過驗證器組件,據我瞭解,這是相同的行爲。所以我需要總是設置完整的鍵列表,但正如我上面寫的,我只需要驗證其中的一些。有沒有辦法解決這個問題?OptionsResolver組件和額外選項
謝謝!
您好,您可以在OptionResolver中定義必需的,可選的和默認值。 也許我會給你一些例子所以它會比描述更容易:
$resolver = new Symfony\Component\OptionsResolver\OptionsResolver;
$resolver
->setRequired(['required1', 'required2'])
->setOptional(['optional1', 'optional2'])
->setDefaults(['defaultValue' => '123'])
;
$options = $resolver->resolve(
[
'required1' => 'test',
'required2' => 'test123',
'optional1' => 'opt'
]
);
然後選擇將看起來像
[
'defaultValue' => '123',
'required1' => 'test',
'required2' => 'test123',
'optional1' => 'opt',
]
,如果我們不設置required1
或required2
在解決了數組,那麼我們得到了Symfony\Component\OptionsResolver\Exception\MissingOptionsException
的例外。 如果我們給不知道的選項(未在setRequired,setOptional或setDefaults中定義),那麼我們得到了Symfony\Component\OptionsResolver\Exception\InvalidOptionsException
異常。
我也考慮了Validator組件和我的理解有相同的行爲
您可以決定哪些值應該是「必需的」 ......但不知道如果我得到你的意思究竟是什麼
感謝您的回覆。也許我寫錯了。事實是,我無法知道可選鍵之前。因此,我會得到你上面寫的例外。 – 2013-04-21 18:06:58
是的...所以我認爲你不能用OptionsResolver做到這一點,或者我不知道如何;)我認爲你需要首先使用setOptional方法定義所有可選的選項。關於驗證組件,您可以創建自定義驗證器並在其中創建自己的邏輯,因此它不應該是問題。 – l3l0 2013-04-23 06:52:22
我傾向於驗證器組件。不過,我已經使用OptionsResolver作爲其中一部分代碼的好工具。我認爲使用它們並不是一個好主意。我對嗎? – 2013-04-24 08:08:40