2014-09-11 3 views
0

J'ai créé un validateur personnalisé que je veux utiliser dans Silex mais je reçois l'erreur suivante en essayant d'y accéder:Silex sur mesure Validator Inscription

PHP Fatal error: Class 'Sisu\\Validator\\Constraints\\ImeiValidator' 
not found in var/www/sisuwhitelabel/vendor/silex/silex/src/Silex/ConstraintValidatorFactory.php 
on line 85 

Mon Constraint:

Imei.php

<?php 
namespace Sisu\Validator\Constraints; 

use Symfony\Component\Validator\Constraint; 

class Imei extends Constraint 
{ 
    public $message = "Here message"; 

    public function validateBy() 
    { 
     return get_class($this).'Validator'; 
    } 
} 

Mon Validator:

ImeiValidator.php

<?php 

namespace Sisu\Validator; 

use Silex\Application; 
use Symfony\Component\Validator\ConstraintValidator; 
use Symfony\Component\Validator\Constraint; 

class ImeiValidator extends ConstraintValidator 
{ 
    public function validate($value, Constraint $constraint) 
    { 
     $this->context->addViolation('Some message %s', 'Some Value');  
     return false; 
    } 
} 

Mon fournisseur de services:

ImeiValidatorServiceProvider.php

<?php 
namespace Sisu\Provider; 

use Silex\Application; 
use Silex\ServiceProviderInterface; 
use Sisu\Validator\ImeiValidator; 

class ImeiValidatorServiceProvider implements ServiceProviderInterface 
{ 
    public function register(Application $app) 
    { 
     $app['validator.imei'] = $app->share(function($app) { 
      $validator = new ImeiValidator(); 
      return $validator; 
     }); 
    } 

    public function boot(Application $app) 
    { 
    } 
} 

appel d'enregistrement:

$app->register(new Sisu\Provider\ImeiValidatorServiceProvider()); 

et je l'utilise dans le applicatin comme ceci:

$form->add('productIdentifier', 'text', array(
       'required' => false, 
       'constraints' => array(
        new Imei(
         array('message' => 'xxxxx') 
        ) 
) 
); 

Répondre