2016-02-22 16 views
7

Tôi vừa cập nhật symfony từ 2.7 lên 3.0 và gặp một số rắc rối với nó ..Symfony 3 - Không thể tải loại biểu mẫu loại

Nó không thể tải loại biểu mẫu của tôi. Đây là một ví dụ.

services.xml

app.search: 
     class: AppBundle\Form\Type\SearchFormType 
     tags: 
      - { name: form.type, alias: app_search } 

Thats cách im cố gắng để tạo ra hình thức.

$form = $this->createForm('app_search', new Search()); 

SearchFormType

namespace AppBundle\Form\Type; 

use Symfony\Component\Form\AbstractType; 
use Symfony\Component\Form\FormBuilderInterface; 

class SearchFormType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
    $builder->add('phrase', 'text'); 
    } 

    public function getBlockPrefix() 
    { 
     return 'app_search'; 
    } 
} 

Bắt lỗi tiếp theo:

An exception has been thrown during the rendering of a template ("Could not load type "app_search"") in ....

Làm thế nào nó sẽ giống như trong symfony 3.0?

Cảm ơn!

+1

Tôi biết điều đó nghe có vẻ khó hiểu nhưng nơi đầu tiên để xem là tài liệu: http://symfony.com/doc/current/book/forms.html#building-the-form. Bạn sẽ nhận thấy rằng các bí danh của biểu mẫu như 'văn bản' đã biến mất. Điều này cũng được đề cập trong tệp nâng cấp. Cũng như một vài chục câu hỏi stackoverflow gần đây. – Cerad

Trả lời

7

Bạn nên thay đổi các thiết lập của bạn để ..

app.search: 
    class: AppBundle\Form\Type\SearchFormType 
    tags: 
     - { name: form.type } 

Và trong kiểu mẫu của bạn

use Symfony\Component\Form\Extension\Core\Type\TextType; 

    // ... 
    $builder->add('phrase', TextType::class); 

Sau đó, để gọi nó là sử dụng ...

$form = $this->createForm(SearchFormType::class, new Search()); 
// or $form = $this->createForm('AppBundle\Form\Type\SearchFormType', new Search()); 

Các dài và ngắn của nó là các hình thức không được đặt tên nữa, chúng được tham chiếu bởi tên lớp.

+0

Tôi đã thử điều đó. Im nhận được Một ngoại lệ đã được ném trong quá trình hiển thị mẫu ("Không thể tải loại" văn bản "") – Tigran

+0

Xem nhận xét thừa nhận của tôi rất đáng chú ý và không hữu ích ở trên. – Cerad

+0

Xin lỗi tôi đã bỏ lỡ một chút. Tôi đã cập nhật. – qooplmao

5

Tôi bị kẹt trong khoảng 2 giờ hôm nay. Và vấn đề đơn giản đến từ không gian tên của kiểu biểu mẫu. Thay vì sử dụng namespace AppBundle\Form\Type; trong tệp SearchFormType.php của bạn, hãy viết namespace AppBundle\Form;.

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