2011-07-17 29 views
7

Tôi đang cố gắng tùy chỉnh các nhãn biểu mẫu được tạo trong biểu mẫu con.Symfony2: tùy chỉnh nhãn biểu mẫu trong bộ sưu tập biểu mẫu

Tôi muốn hiển thị đồ đạc bóng đá được chứa trong một tuần trò chơi cụ thể, như sau:

 
- Fixture 1 : Manchester United (0) - (1) Arsenal 
- Fixture 2 : Chelsea (2) - (1) Liverpool 
- ... 

hình thức hiển thị của tôi tất cả đồ đạc và điểm liên quan nhưng tất cả các nhãn chứa các tên cột cơ sở dữ liệu (score1, score2). Thay vào đó, tôi muốn đặt tên nhóm. Vì vậy, nó hiện đang hiển thị:

 
- Fixture 1 : score1 (0) - (1) score2 
- Fixture 2 : score1 (2) - (1) score2 
- ... 

Trong bộ điều khiển, tôi tạo biểu mẫu tuần (Loại tuần). $ week chứa dữ liệu tuần và dữ liệu đồ đạc sử dụng $ week-> getFixtures().

Controller/DefaultController.php

$form = $this->createForm(new WeekType(), $week)->createView(); 

return array(
    'form' => $form, 
); 

Mẫu hình thức/WeekType.php

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

Các Lịch thi đấu thêm 2 lĩnh vực. Tôi muốn thay thế nhãn mặc định thành tên nhóm. Tuy nhiên tôi không thể truy cập dữ liệu lịch thi đấu trong biểu mẫu này. $ tùy chọn là NULL. Tôi nghĩ $ tùy chọn ['dữ liệu'] sẽ chứa dữ liệu đồ đạc ... nhưng tôi đã sai.

Form/FixtureType.php

class FixtureType extends AbstractType 
{ 
    public function buildForm(FormBuilder $builder, array $options) 
    { 
     $builder->add('score1', 'text', array('label' => **WHAT TO PUT HERE**)); 
     $builder->add('score2', 'text', array('label' => **WHAT TO PUT HERE**)); 
    } 
} 

tôi hiển thị tất cả đồ đạc sử dụng mã này, và nó hoạt động tuyệt vời.

index.html.twig

{% for fixture in week.form.fixtures %} 
     {{ form_widget(fixture) }} 
    {% endfor %} 

Có lẽ tôi có thể tùy chỉnh nhãn của tôi trực tiếp trong index.html.twig nhưng làm thế nào tôi có thể nhận đồ đạc dữ liệu?

Có ai đó gặp sự cố này và giải quyết vấn đề này không?

Trả lời

5

Tôi tìm thấy một giải pháp!

Trong mẫu "index.html.twig", tôi đã lặp qua các phần tử biểu mẫu. Đó là một sai lầm. Tôi chỉ cần lặp lại các đồ đạc và nhận tiện ích biểu mẫu liên quan.

index.html.cành

{% for fixture in week.fixtures %} 
    fixture.HomeTeam.name 
    {{ form_widget(week.form.fixtures[loop.index0]) }} 
    fixture.AwayTeam.name 
{% endfor %} 

Bí quyết là để lấy các yếu tố hình thức trực tiếp từ mảng widget dạng:

week.form.fixtures[loop.index0] 
Các vấn đề liên quan