2013-08-11 28 views
9

tôi thêm một lĩnh vực không ánh xạ tới một loại hình thức symfony2:Validate checkbox không ánh xạ tới thực thể trong một hình thức symfony2

$builder->add('terms','checkbox', array('mapped' => false, 
     'constraints' => array(new NotBlank()))); 

Nhưng NotBlank() hạn chế không hoạt động! Chỉ khi tôi thay đổi loại từ 'hộp kiểm' thành 'văn bản' thì nó hoạt động như mong đợi. Vậy làm thế nào tôi có thể xác nhận một hộp kiểm? Tất nhiên tôi đã thử với các ràng buộc 'True()', 'EqualTo()' và 'Length (...)'. Nhưng không thành công. Tôi cũng đã thử các giá trị POST khác nhau (1/0, true/false, on/off ...) cho trường.

Sự khác biệt lớn giữa trường hộp kiểm và trường văn bản liên quan đến xác thực trường biểu mẫu trong symfony2 là gì?

Thanx Stef

+0

Để có được đôi mắt về câu hỏi của bạn, bạn nên thẻ nó với thẻ phổ biến nhất có liên quan đến câu hỏi của bạn - trong trường hợp này, tôi sẽ giới thiệu thay thế một trong các thẻ của bạn, như thẻ 'ràng buộc' bằng 'PHP'. – Brionius

Trả lời

12

NotBlank xác nhận chuỗi là không có sản phẩm nào. Hãy thử sử dụng NotNull

True cũng phải hoạt động.

Xác thực rằng giá trị là đúng. Cụ thể, điều này sẽ kiểm tra xem nếu giá trị chính xác là đúng, chính xác là số nguyên 1 hoặc chính xác là chuỗi "1". Ràng buộc này có thể được áp dụng cho các thuộc tính (ví dụ: một điều khoảnĐặc tính được chấp nhận trên một mô hình đăng ký).

+0

Thanx. Hoạt động ngay bây giờ. – kieste

+1

[True] (http://symfony.com/doc/current/reference/constraints/True.html) hoạt động để tôi xác thực hộp kiểm, cảm ơn bạn. –

8

câu trả lời Cập nhật cho Symfony 3.0:

use Symfony\Component\Form\Extension\Core\Type\CheckboxType; 
use Symfony\Component\Validator\Constraints\IsTrue; 

// ... 
{ 
    $builder->add('terms', CheckboxType::class, array('constraints'=>new IsTrue(array('message'=>'Needs to be clicked'))); 
} 
Các vấn đề liên quan