2012-09-30 31 views
0

我想添加一些驗證我的登記表,但我不能讓它的工作,到目前爲止,我還加了我的用戶實體無法獲得的Symfony驗證工作

片段。

class User { 

/** 
* @ORM\Id 
* @ORM\Column(type="integer") 
* @ORM\GeneratedValue(strategy="AUTO") 
*/ 
    protected $userid; 

/** 
* @ORM\Column(type="string", length=30) 
*/ 
protected $username; 

爲此我添加了一個validation.yml到我的包中。

# src/Blomster/UserBundle/Resources/config/validation.yml 

Blomster/UserBundle/Entity/User: 
    properties: 
     username: 
      - NotBlank: ~ 
      - MinLength: { limit: 3, message: "Username is too short." } 
      - MaxLength: { limit: 15, message: "Username is too long." } 

使用$形式 - > isValid()的始終返回true,所以我想我的var_dump形式

 'validation_groups' => null 
     'validation_constraint' => null 
     'constraints' => 
     array (size=0) 
      ... 

本身是偉大的工作形式,它提交的時候添加到我的數據的基礎上,做我需要以某種方式將約束添加到表單中?

新增UserType.php

class UserType extends AbstractType { 

    public function buildForm(FormBuilderInterface $builder, array $options) { 
    $builder->add('username', null, array('label' => 'Username')); 
    $builder->add('email', 'email', array('label' => 'Email')); 
    $builder->add('password', 'repeated', array(
     'type' => 'password', 
     'required' => true, 
     'first_options' => array('label' => 'Password'), 
     'second_options' => array('label' => 'Repeat password'), 
    )); 
    } 

    public function getDefaultOptions(array $options) { 
    return array('data_class' => 'Blomster\UserBundle\Entity\User'); 
    } 

    public function getName() { 
    return 'user'; 
    } 
} 

回答

1

您需要使用長度限制:

 - MinLength: { limit: 3 } 
     - MaxLength: { limit: 15 } 

here是文檔。

事實上:你需要指定一個限制,因爲你還可以設置其他選項,如消息等。

+0

我已經添加了您的更正,但是,它仍然不會將約束添加到窗體。我已經更新了這個問題。 – MartinElvar

+0

您是否清除了緩存? (常見錯誤,所以我嘗試!) –

+0

當在dev env上運行時,這是否有必要?沒有工作的想法:/ – MartinElvar