Count

Valida que el elemento de una determinada colección (es decir, un arreglo o un objeto que implemente a Countable) esté entre algún valor mínimo y máximo.

Nuevo en la versión 2.1: La restricción Count se agregó en Symfony 2.1.

Aplica a propiedad o método
Opciones
Clase Symfony\Component\Validator\Constraints\Count
Validador Symfony\Component\Validator\Constraints\CountValidator

Uso básico

Para verificar que el arreglo de campos emails contiene entre 1 y 5 elementos puedes agregar lo siguiente:

  • YAML
    # src/Acme/EventBundle/Resources/config/validation.yml
    Acme\EventBundle\Entity\Participant:
        properties:
            emails:
                - Count:
                    min: 1
                    max: 5
                    minMessage: "Debes especificar cuando menos una dirección de correo electrónico"
                    maxMessage: "No puedes especificar más de {{ limit }} direcciones de correo electrónico"
    
  • Annotations
    // src/Acme/EventBundle/Entity/Participant.php
    namespace Acme\EventBundle\Entity;
    
    use Symfony\Component\Validator\Constraints as Assert;
    
    class Participant
    {
        /**
         * @Assert\Count(
         *      min = "1",
         *      max = "5",
         *      minMessage = "Debes especificar al menos una dirección de correo electrónico",
         *      maxMessage = "No puedes especificar más de {{ limit }} direcciones de correo electrónico"
         * )
         */
         protected $emails = array();
    }
    
  • XML
    <!-- src/Acme/EventBundle/Resources/config/validation.xml -->
    <class name="Acme\EventBundle\Entity\Participant">
        <property name="emails">
            <constraint name="Count">
                <option name="min">1</option>
                <option name="max">5</option>
                <option name="minMessage">Debes especificar cuando menos una dirección de correo electrónico</option>
                <option name="maxMessage">No puedes especificar más de {{ limit }} direcciones de correo electrónico</option>
            </constraint>
        </property>
    </class>
    
  • PHP
    // src/Acme/EventBundle/Entity/Participant.php
    namespace Acme\EventBundle\Entity;
    
    use Symfony\Component\Validator\Mapping\ClassMetadata;
    use Symfony\Component\Validator\Constraints as Assert;
    
    class Participant
    {
        public static function loadValidatorMetadata(ClassMetadata $data)
        {
            $metadata->addPropertyConstraint('emails', new Assert\Count(array(
                'min'        => 1,
                'max'        => 5,
                'minMessage' => 'You must specify at least one email',
                'maxMessage' => 'You cannot specify more than {{ limit }} emails',
            )));
        }
    }
    

Opciones

min

tipo: integer [default option]

Esta opción requerida es el valor de cantidad mínima. La validación fallará si la cantidad de elementos de la colección suministrados menor que este valor mínimo.

max

tipo: integer [default option]

Esta opción requerida es la cantidad del valor máximo. La validación fallará si la cantidad de elementos dados de la colección es más grande que este valor máximo.

minMessage

tipo: string predefinido: This collection should contain {{ limit }} elements or more. (Esta colección debe contener {{ limit }} elementos o más).

El mensaje que será mostrado si la cantidad de elementos de la colección subyacente es menor que la opción min.

maxMessage

tipo: string predefinido: This collection should contain {{ limit }} elements or less. (Esta colección debe contener {{ limit }} elementos o menos.).

El mensaje que será mostrado si la cantidad de elementos de la colección subyacente es mayor que la opción max.

exactMessage

tipo: string predefinido: This collection should contain exactly {{ limit }} elements. (Esta colección debe contener exactamente {{ limit }} elementos.).

El mensaje que será mostrado si los valores min y max son iguales y la cantidad de elementos de la colección subyacente no es exactamente este valor.

Bifúrcame en GitHub