Моя проверка не вызывается при определении с использованием validation.yml. Используя php или аннотацию, все работает нормально.
namespace AppBundle\Form;
use Symfony\Component\Validator\Context\ExecutionContextInterface;
class LoginForm
{
private $login;
private $password;
public function __construct($login, $password)
{
$this->login = $login;
$this->password = $password;
}
public function validate(ExecutionContextInterface $context)
{
$context->buildViolation('Error')
->atPath('login')
->addViolation();
}
}
Это моя проверка.yml
AppBundle\Form\LoginForm:
constraints:
- Callback: [validate]
А это мой контроллер
class LoginController extends Controller
{
public function loginAction(Request $request)
{
if ($request->isMethod('POST')) {
$login = $request->request->get('loginform_login');
$password = $request->request->get('loginform_password');
$form = new LoginForm($login, $password);
$errors = $this->get('validator')->validate($form);
if (count($errors) > 0) {
return $this->render('login/error.html.twig');
}
return $this->render('login/ok.html.twig');
}
return $this->render('login/login.html.twig');
}
}
Приведенный выше код всегда возвращает «ОК», независимо от того, какой логин или пароль я ввожу. Любая подсказка?
data_class
вашей формы? Большинство примеров, которые я видел в поваренных книгах, и большинство случаев, с которыми я сталкивался лично, имеют тенденцию добавлять ограничения к конкретному полю, а не к форме. Поэтому и спрашиваю. - person ReservedDeveloper   schedule 28.10.2015configureOptions/setDefaultOptions
)? - person ReservedDeveloper   schedule 29.10.2015