2013-09-05 33 views
7

Trên phương thức buildForm của classe (AbstractType bắt nguồn), tôi có thể đặt hành động của biểu mẫu đó không? Những gì tôi muốn làm là tương tự như setAction phương pháp mà tôi có thể sử dụng khi xây dựng một hình thức nhúng:Tôi có thể thay đổi hành động Loại Biểu mẫu khi xây dựng không?

$form = $this->createFormBuilder() 
    ->setAction($this->generateUrl('my_action')) 
    ->add('field', 'text') 
    ->add('button', 'submit'); 

Ý tôi là, là setAction tương đương để tạo thành lớp học?

Trả lời

32

Bạn được tiếp cận với những người xây dựng giống như hình thức trong phương pháp buildForm, vì vậy chỉ cần gọi setAction trên nó sẽ làm việc:

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder->setAction($path); 
} 

Câu hỏi đặt ra là làm thế nào bạn vượt qua $path với loại hình thức của bạn. Một trong những cách sẽ là để vượt qua nó như là một tùy chọn khi tạo biểu mẫu. Tuy nhiên, nếu bạn đang vượt qua $path, tại sao không chỉ đặt chính mình là action?

$form = $this->createForm(new MyType(), $object, array(
    'action' => $this->generateUrl('my_action'), 
)); 

Một cách khác sẽ được tiêm router với loại hình thức và sử dụng nó để tạo ra các URL, nhưng tôi không nghĩ đó là một ý tưởng tốt để làm cho rằng loại quyết định trong một kiểu mẫu.

+0

Tuyệt vời, nó đã hoạt động! Cảm ơn! –

+0

Tuyệt vời. Đừng quên upvote và đánh dấu câu trả lời. ;) –

+0

Tôi không thể upvote được nêu ra, như danh tiếng của tôi vẫn không cho phép nó. khi nó cho phép, tôi sẽ làm điều đó ok? –

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