2011-08-07 27 views
5

Khi sử dụng bộ sưu tập hình thức, ID yếu tố hình thức sẽ được tự động xây dựng bởi SF2Symfony2: tùy chỉnh ID yếu tố hình thức trong các bộ sưu tập hình thức

Form/WeekType.php

class WeekType extends AbstractType 
{ 
    public function getName() 
    { 
     return "MyBundle"; 
    } 

    public function buildForm(FormBuilder $builder, array $options) 
    { 
     $builder->add('fixtures', 'collection', array(
      'type' => new FixtureType(), 
     )); 
    } 
} 

Form/FixtureType.php

class FixtureType extends AbstractType 
{ 
    public function buildForm(FormBuilder $builder, array $options) 
    { 
     $builder->add('score1', 'text'); 
    } 
} 

Mã này tạo ra các phần tử biểu mẫu sau:

<select id="MyBundle_fixtures_0_score1" /> 
<select id="MyBundle_fixtures_1_score1" /> 

0, 1 ... chỉ là chỉ mục lặp hiện tại.

Tôi muốn thay đổi id của các thẻ đã chọn. Ví dụ, đặt giá trị khóa chính (từ Model) thay vì chỉ số lặp.

<select id="MyBundle_fixtures_151_score1" /> 
<select id="MyBundle_fixtures_152_score1" /> 

hoặc thậm chí:

<select id="MyBundle_fixtures_0_score1_151" /> 
<select id="MyBundle_fixtures_1_score1_152" /> 

151, 152 là giá trị khóa chính từ Lịch thi đấu bảng (từ cơ sở dữ liệu).

Trả lời

0

Tôi thấy hai cách để làm điều này:

  • Bạn có thể chỉnh sửa cho mình chìa khóa của các bộ sưu tập truyền cho các hình thức, ví dụ như tạo ra một bộ sưu tập mới với id thay vì phím.

  • Bạn có thể sửa đổi ResizeFormListener để sử dụng id thay vì khóa.

+0

Đề xuất cuối cùng của bạn vẫn đang được thảo luận (https://github.com/symfony/symfony/pull/1461). Về đề xuất đầu tiên của bạn, tôi không hiểu. Làm cách nào để sửa đổi các khóa bộ sưu tập được chuyển đến biểu mẫu? – ocornu

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