OptionsResolver组件和额外选项

时间:2013-04-21 17:03:49

标签: symfony

我有一个可以有各种键的数组。但是,始终存在两个所需的键。我现在使用OptionsResolver组件。在没有任何额外的键之前它可以正常工作。我也考虑过Validator组件,据我所知有相同的行为。所以我需要始终设置完整的密钥列表,但正如我上面所写,我只需要验证其中的一些。有没有办法解决这个问题?

谢谢!

1 个答案:

答案 0 :(得分:1)

您好,您可以在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',
]

如果我们未在已解析的数组中设置required1required2,那么我们会遇到Symfony\Component\OptionsResolver\Exception\MissingOptionsException异常。 如果我们给出not know选项(未在setRequired,setOptional或setDefaults中定义),那么我们得到Symfony\Component\OptionsResolver\Exception\InvalidOptionsException异常。

  

我还考虑了Validator组件,据我所知有相同的行为

你可以决定哪些值应该是“必需的”......但不确定我是否明白了你的意思