Witajcie, próbowałem z dokumentacją ale coś mi nie wychodzi w jaki sposób mogę stworzyć własną walidację aby później móc podać ją w adnotacji i tam wstawić jej opcjonalne parametry, chcę walidować string czy zawiera brzydkie słowa, klasę wyobrażam sobie mniej-więcej tak:
<?php
namespace BlogBundle\Validator\Constraints;
use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;
/**
* @Annotation
*/
class WrongWordsValidator extends ConstraintValidator
{
public $words = [];//możliwość dodania dodatkowych słów
public $message = "Podano brzydkie słowa, popraw swoją wypowiedź";//podstawowa wiodomość w przypadku błędów
public $enableBasicWords = true;
protected $basicWords = [];//tablica z przekleństwami, mam już przygotowaną ;)
public function validate($value, Constraint $constraint)
{
$check = false;
foreach(explode(' ',$value) AS $word){
if(array_search($word, $this->basicWords)){
$check = true;
}
if(array_search($word, $this->words)){
$check = true;
}
}
if ($check) {
$this->context->buildViolation($this->message)
->setParameter('%string%', $value)
->addViolation();
}
}
}
nie rzuca błędem w przypadku użycia ale nie działa ;) nie mam pojęcia w jaki sposób to prawidłowo zrobić.
EDIT - ROZWIĄZANE
Powyższy kod wystarczy rozdzielić na dwa pliki, tak jak jest w dokumentacji, ja nie zauważyłem i wstawiłem wszystko do jednego.
http://symfony.com/doc/current/cookbook/validation/custom_constraint.html