2012-04-09 43 views
1
namespace Topxia\LiftBundle\Form; 

use Symfony\Component\Validator\Constraint as Assert; 

class AddUser { 

    /** 
    * @Assert\NotBlank(message="用戶名不能爲空") 
    */ 
    public $username; 

    /** 
    * @Assert\NotBlank(message="用戶姓名不能爲空") 
    */ 
    public $name; 

    /** 
    * @Assert\NotBlank(message="密碼不能爲空") 
    * @Assert\MinLength(limit=4,message="密碼太短了") 
    * @Assert\MaxLength(limit=24,message="密碼太長了") 
    */ 
    public $password; 

    /** 
    * @Assert\NotBlank(message="密碼不能爲空") 
    */ 
    public $rpassword; 

    /** 
    * @Assert\NotBlank(message="郵箱格式不正確") 
    * @Assert\Email(message="郵箱格式不正確") 
    */ 
    public $email; 

    /** 
    * @Assert\NotBlank(message="k3系統編號不能爲空") 
    */ 
    public $num; 

    /** 
    * @Assert\NotBlank() 
    * @Assert\Choice({"0", "1", "2", "3", "4"}) 
    */ 
    public $roles; 

    public $changePassword; 
} 

<?php 
// src/Topxia/LiftBundle/Form/AddUserType.php 

namespace Topxia\LiftBundle\Form; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilder; 

class AddUserType extends AbstractType{ 

    public function buildForm(FormBuilder $builder, array $options){ 
     $builder->add('username', 'text', array('label' => '用戶姓名')); 
     $builder->add('name', 'text', array('label' => '用戶名')); 
     $builder->add('password', 'password', array('label' => '密碼')); 
     $builder->add('rpassword', 'password', array('label' => '重複密碼')); 
     $builder->add('email', 'email', array('label' => '郵件')); 
     $builder->add('num', 'text', array('label' => 'K3系統編號')); 
     $builder->add('roles', 'choice', array('label' => '用戶組', 'multiple' => false, 'expanded' => true, 
       'choices' => array(
        '0' => '超級管理員', 
        '1' => '倉庫管理員', 
        '2' => '採購管理員', 
        '3' => '採購員', 
        '4' => '供應商' 
     ), 
     )); 
     $builder->add('changePassword', 'checkbox', array('label' => '登錄修改密碼', 'value' => '1')); 
    } 

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

} 

當我使用$形式 - > bindRequest($請求);在控制器中出現錯誤: [語義錯誤]屬性Topxia \ LiftBundle \ Form \ AddUser :: $ username中的註釋「@Symfony \ Component \ Validator \ Constraint \ NotBlank」不存在或不能自動加載。 500內部服務器錯誤 - AnnotationException 我不知道這件事。 謝謝Symfony2的bindrequest錯誤

回答

7

您的命名空間聲明中有一個錯字。您錯過了「s」:

use Symfony\Component\Validator\Constraints as Assert; 
+0

我認爲這是symfony有一個錯字。命名空間的所有其他名稱都是單數。 – meze 2012-04-09 07:46:22

+0

這可能不是一個錯字,但是這與其他命名空間不符 – Josiah 2012-04-10 23:57:03

1

2.3之後最大長度不存在。使用:

\Length(max = "150") 

花了我很多時間弄清楚。

我的錯誤是:

[語義錯誤]註釋財產 「@Symfony \分量\驗證\約束 \的MaxLength」 ....出版:: $評論不存在,或者無法自動加載。