2016-03-03 17 views
8

tôi có các hình thức sau đây:lĩnh vực Choice giá trị mặc định

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
    ->add('type', ChoiceType::class, array(
     'expanded' => true, 
     'multiple' => false, 

     'choices' => array(
      'Friend' => 'friend', 
      'Guide' => 'guide' 
     ) 
    )); 
} 

Làm thế nào tôi có thể làm cho 'bạn bè' hộp kiểm để được kiểm tra theo mặc định khi biểu mẫu được trả lại?

Trả lời

7

Tôi nghĩ bạn nên thử với tùy chọn data, nhưng chỉ trong trường hợp bạn thậm chí không lưu dữ liệu bên trong đối tượng của mình, vì nó sẽ ghi đè lên dữ liệu khác.

Quan trọng: Tạo hành động tốt, nhưng không tốt cho hành động chỉnh sửa.

public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
     ->add('type', ChoiceType::class, array(
      'expanded' => true, 
      'multiple' => false, 

      'choices' => array(
       'Friend' => 'friend', 
       'Guide' => 'guide' 
      ), 
      'data' => 'friend' 
     )); 
    } 

Official link

Extract:

Khi bạn tạo một hình thức, từng lĩnh vực ban đầu sẽ hiển thị giá trị của sở hữu tương ứng của đối tượng tên miền của biểu mẫu (nếu một đối tượng là bị ràng buộc vào biểu mẫu). Nếu bạn muốn ghi đè giá trị ban đầu cho các hình thức hoặc chỉ là một lĩnh vực riêng lẻ, bạn có thể thiết lập nó trong các tùy chọn dữ liệu

+0

Cảm ơn bạn, nó đã hoạt động! với lowercased ''data' => 'friend'' –

+1

Bạn được chào đón, tôi đang cập nhật cho những người tương lai trong tình huống tương tự như của bạn. – pbenard

+3

Tôi không nghĩ rằng điều này là an toàn: Từ các tài liệu của riêng symfony> __The tùy chọn dữ liệu luôn ghi đè giá trị được lấy từ dữ liệu miền (đối tượng) khi hiển thị. Điều này có nghĩa là giá trị đối tượng cũng được ghi đè lên khi biểu mẫu sửa đổi một đối tượng đã tồn tại, làm cho nó mất giá trị tồn tại lâu dài của nó khi biểu mẫu được gửi .__ – user2268997

6

Sử dụng tùy chọn trường empty_data mẫu. (không phải data vì nó sẽ ghi đè mọi dữ liệu đã đăng trừ khi bạn đặt dữ liệu động).

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
    ->add('type', ChoiceType::class, array(
     'expanded' => true, 
     'multiple' => false, 

     'choices' => array(
      'Friend' => 'friend', 
      'Guide' => 'guide' 
     ), 
     'empty_data' => 'friend' 
    )); 
} 

Tùy chọn khác cho trường hợp phức tạp là sử dụng Sf Dynamic Form Events.

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