2012-10-09 37 views
1

驗證器有問題。如果我輸入無效數據,我的表單總是有效的。 我的驗證器似乎沒有被考慮。驗證器不工作Symfony2.1

代碼:

//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] } 

//控制器

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

} 

形式

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

} 

回答

0

您應將validation.yml文件連接到套裝

個在JobeetBundle \ DependencyInjection \ JobeetExtension

添加下列行:

$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);

在config.yml

validation:{ enabled: true }

+0

我不認爲有必要手動連接驗證文件到捆綁它嗎?我從來沒有這樣做過。鏈接到validation.yml文件中的正確實體應該足夠了。另一方面啓用設置驗證可能會解決他的問題。 –

1

在config.yml:

驗證:{啓用: true}

這對我來說伎倆!