0

我创建了一个我想在 Silex 中使用的自定义验证器,但在尝试访问它时出现以下错误:

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

我的约束:

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';
    }
}

我的验证器:

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;
    }
}

我的服务提供商:

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)
    {
    }
}

报名电话:

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

我在这样的应用程序中使用它:

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

1 回答 1

0

我找到了答案。约束 Imei 和验证器 ImeiValidator 应该在同一个文件夹中。

更多关于这里的主题:

https://github.com/pix-art/Silex-Skeleton/tree/master/src/Constraint

于 2014-09-11T10:29:10.313 回答