2012-08-08 24 views
20

Tôi đang sử dụng Symfony2 và FOSUserBundle.Bắt buộc một trường không được yêu cầu

Giống như chi tiết trong tài liệu, tôi đã ghi đè và tạo thuộc tính "tên" trong thực thể Người dùng.

Tôi làm tất cả những gì cần thiết và cuối cùng nhận được trường đó được hiển thị trong dạng xem biểu mẫu.

Điều này là: khi tôi đi form_widget(form.name) và thẻ html đầu vào được tạo, một thuộc tính bắt buộc = "bắt buộc" được tạo trong đó. Và điều đó khiến động cơ chuyển sang màu đỏ đầu vào khi trường đó không được điền.

Làm cách nào để yêu cầu Symfony2 không làm cho trường đó bắt buộc? Tôi đoán rằng nó phải có mặt ở đây:

 parent::buildForm($builder, $options); 

    // add your custom field 
    $builder->add('name', 'text', array('label' => 'form.name')); 
    $builder->remove('username'); 

hoặc ở đây:

/** 
* @ORM\Column(type="string", length="255") 
* 
* @Assert\MinLength(limit="0", message="The name is too short.", groups={"Registration", "Profile"}) 
* @Assert\MaxLength(limit="255", message="The name is too long.", groups={"Registration", "Profile"}) 
*/ 
private $name; 

Trả lời

47
$builder->add('name', 'text', array('label' => 'form.name','required' => false)); 
+5

+1 - Có thể có thêm rằng điều này chỉ dừng HTML5 xác nhận trên các yếu tố hình thức. Tất cả các xác nhận vv từ thực thể của bạn vẫn được bật và vẫn phải hợp lệ trước khi thực thể có thể được duy trì. – insertusernamehere

+3

Có cách nào để thực hiện điều đó, thông qua các nhóm xác thực không? Tôi không thể làm cho họ có hiệu lực các thuộc tính html5 yêu cầu, mà làm cho các nhóm xác nhận gần trên vô dụng đối với tôi. –

Các vấn đề liên quan