2016-09-28 12 views
8

Tôi muốn xác định lược đồ cấu hình cho lớp của mình và ghi đè chúng bằng các lựa chọn quản trị viên. Để thực hiện việc này, tôi cần một biểu mẫu để thu thập dữ liệu từ quản trị viên.Cách tự động tạo biểu mẫu dựa trên đối tượng TreeBuilder?

Trong Symfony Configuration Component, lớp TreeBuilder chịu trách nhiệm xác định lược đồ cấu hình. và như bạn biết, Form Component có cấu trúc cây giống như TreeBuilder.

Cách tự động tạo đối tượng Form dựa trên cá thể TreeBuilder?

+0

Bạn có thể sử dụng 'formBuilder' để tự động tạo biểu mẫu dựa trên đầu ra' treeBuilder'? – Rvanlaak

+0

Làm cách nào để có thể tự động? –

Trả lời

1

Treebuilder của bạn hoặc một phần của nó, sẽ phải lặp lại được. Vì vậy, bằng cách cho phép nó đại diện cho một hình thức nghiêm ngặt nhất có thể, bạn có thể sử dụng nó để dễ dàng ánh xạ cấu hình cho người xây dựng. Nó sẽ là dễ nhất để sử dụng định dạng yml:

form: 
    name: 'exampleForm' 
    path: 'target_path' 
    fields: 
     fieldName: 
      type: 'TextType' 
      attr: 
       # some additional options 
     otherFieldName: 
      type: 'TextType' 
      attr: 
       # some additional options 

Xem phần chế biến của các thành phần cấu hình để biết thêm: http://symfony.com/doc/current/components/config/definition.html#processing-configuration-values

Cấu hình xử lý sau đó có thể được xử lý với các nhà máy thức và có lẽ sẽ trông giống như này:

$config = $configuration->processConfiguration($config, FormType::class, null, $config['path']); 
$formBuilder = $container->get('form.factory')->createNamedBuilder($config['name'); 

foreach ($config['fields'] as $field) { 
    $formBuilder->add($fieldName, $field['type'], $field['attr']); 
} 
$form = $formBuilder->createForm(); 
Các vấn đề liên quan