大家好,我有一个车辙场,我想对这个领域进行验证,但不知道在哪里。
我的用户类有id,rut(字符串)和name(字符串)。
我必须创建一个新类来验证rut ??
my usertype
class UsuariosType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('rut')
->add('nombre');
}
/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Paginas\UsuariosBundle\Entity\Usuarios'
));
}
/**
* {@inheritdoc}
*/
public function getBlockPrefix()
{
return 'paginas_usuariosbundle_usuarios';
}
}
控制器
class DefaultController extends Controller
{
public function agregarAction()
{
$usuario=new Usuarios();
$form=$this->createForm(new UsuariosType(), $usuario);
$request = $this->getRequest();
if ($request->getMethod() == 'POST') {
$form->bind($this->getRequest());
if ($form->isValid()) {
$usuario=$form->getData();
$em=$this->getDoctrine()->getManager();
$em->persist($usuario);
$em->flush();
$product=$em->getRepository('PaginasUsuariosBundle:Usuarios')->findAll();
//redirecciona al listar
return $this->redirectToRoute('usuario_lista');
}
}
}
}
列出项目
返回$ this->渲染(' PaginasUsuariosBundle:默认:crear_usuario.html.twig', 数组('形式' => $ form-> createView() ));
我在网上发现了这个...但是不知道如何使用它们来验证车辙场。
rut.php
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\Exception\MissingOptionsException;
/**
* @Annotation
*/
class Rut extends Constraint
{
public $message = 'this value is not a valid RUT';
public function __construct($options = null)
{
parent::__construct($options);
}
}
rutvalidator.php
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;
class RutValidator extends ConstraintValidator
{
/**
* {@inheritDoc}
*/
public function validate($value, Constraint $constraint)
{
$r = strtoupper(str_replace(array(".", "-"), "", $value));
$sub_rut = substr($r, 0, strlen($r) - 1);
$sub_dv = substr($r, - 1);
$x = 2;
$s = 0;
for ($i = strlen($sub_rut) - 1; $i >= 0; $i--) {
if ($x > 7) {
$x = 2;
}
$s += $sub_rut[$i] * $x;
$x++;
}
$dv = 11 - ($s % 11);
if ($dv == 10) {
$dv = 'K';
}
if ($dv == 11) {
$dv = '0';
}
if ($dv != $sub_dv) {
$this->context->addViolation($constraint->message, array('%string%' => $value));
}
}
}
有人可以帮助我,请问我应该把这些文件放在哪里(rut和rutvalidator)以及我如何调用它们...是在usertype还是控制器?