Преглед на файлове

[Validator] made fields the default option for Collection constraint

Fabien Potencier преди 14 години
родител
ревизия
a9160eee70

+ 14 - 0
src/Symfony/Component/Validator/Constraints/Collection.php

@@ -19,6 +19,20 @@ class Collection extends \Symfony\Component\Validator\Constraint
     public $extraFieldsMessage = 'The fields {{ fields }} were not expected';
     public $missingFieldsMessage = 'The fields {{ fields }} are missing';
 
+    /**
+     * {@inheritDoc}
+     */
+    public function __construct($options = null)
+    {
+        // no known options set? $options is the fields array
+        if (is_array($options)
+            && !array_intersect(array_keys($options), array('groups', 'fields', 'allowExtraFields', 'allowMissingFields', 'extraFieldsMessage', 'missingFieldsMessage'))) {
+            $options = array('fields' => $options);
+        }
+
+        parent::__construct($options);
+    }
+
     public function getRequiredOptions()
     {
         return array('fields');

+ 7 - 0
tests/Symfony/Tests/Component/Validator/Constraints/CollectionValidatorTest.php

@@ -40,6 +40,13 @@ class CollectionValidatorTest extends \PHPUnit_Framework_TestCase
         )))));
     }
 
+    public function testFieldsAsDefaultOption()
+    {
+        $this->validator->isValid(array('foo' => 'foobar'), new Collection(array(
+            'foo' => new Min(4),
+        )));
+    }
+
     public function testThrowsExceptionIfNotTraversable()
     {
         $this->setExpectedException('Symfony\Component\Validator\Exception\UnexpectedTypeException');