addFieldConstraint(0, new Email()); // The second field must contain a date $validator->addFieldConstraint(1, new Date()); // Validate the legend $validator->setExpectedHeaders(['foo', 'bar', 'bim']); // An line must contain 3 columns $validator->addDataConstraint(new Callback(function ($data, ExecutionContextInterface $context) { if (count($data) !== 6) { // 6 because of the legend (3 fields * 2) $context->addViolation('The line must contain 3 columns'); } })); // Initialisation of the parser $parser = new CsvParser(); $parser->setHasHeaders(true); $validator->validate($parser->parseFile(__DIR__.'/tests/fixtures/example.csv')); if ($validator->isValid() === false) { foreach ($validator->getErrors() as $error) { $line = $error->getLine(); $column = $error->getColumn(); $message = $error->getViolation()->getMessage(); echo <<
  • Line: $line
  • Column: $column
  • $message

  • EOF; } }