Reputation: 11
I have a problem with validators. My form is always valid also if i enter invalid data. My validator does not seem to be considered.
The code:
//validation.yml
AskedTech\JobeetBundle\Entity\Users:
properties:
email:
- Email:
message: The email "{{ value }}" is not a valid email.
groups: [registration]
- NotBlank: { groups: [registration] }
- UniqueEntity: { groups: [registration] }
password:
- NotBlank: { groups: [registration] }
- MinLength: { limit: 7, groups: [registration] }
first_name:
- NotBlank: { groups: [registration] }
last_name:
- NotBlank: { groups: [registration] }
//Controller
namespace AskedTech\JobeetBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use AskedTech\JobeetBundle\Entity\Users;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use AskedTech\JobeetBundle\Form\SignupType;
class UsersController extends Controller {
public function signupAction(Request $request) {
$users = new Users();
$form = $this->createForm(new SignupType(), $users);
if ($request->isMethod('POST')) {
$form->bind($request);
if ($form->isValid()) {
$post_value = $request->request->get($form->getName());
return $this->redirect($this->generateUrl('welcome', array('name' => $post_value['email'])));
}
}
return $this->render('AskedTechJobeetBundle:Users:signup.html.twig', array(
'form' => $form->createView(),
));
}
public function welcomeAction($name) {
return new Response('<html><body>Welcome in Jobeet '.$name.'!</body></html>');
}
}
Form
namespace AskedTech\JobeetBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class SignupType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder->add('email', 'email');
$builder->add('first_name', 'text');
$builder->add('last_name', 'text');
$builder->add('email', 'text');
$builder->add('password', 'password');
}
public function getName() {
return 'signup';
}
public function setDefaultOptions(OptionsResolverInterface $resolver) {
$resolver->setDefaults(array(
'data_class' => 'AskedTech\JobeetBundle\Entity\Users',
'validation_groups' => array('AskedTech\JobeetBundle\Entity\Users', 'registration')
));
}
}
Upvotes: 1
Views: 1170
Reputation: 1161
in config.yml:
validation:{ enabled: true }
This did the trick for me!
Upvotes: 1
Reputation: 106
you should connect your validation.yml file to Bundle
in JobeetBundle\DependencyInjection\JobeetExtension add following lines:
$yamlMappingFiles = $container-> getParameter('validator.mapping.loader.yaml_files_loader.mapping_files');
$yamlMappingFiles[] = DIR . '/../Resources/config/validation.yml'; $container->setParameter('validator.mapping.loader.yaml_files_loader.mapping_files', $yamlMappingFiles);
in config.yml:
validation:{ enabled: true }
Upvotes: 0