实体字段出错 - Symfony2

时间:2012-10-01 14:21:45

标签: symfony

这是我的档案:

<?php

namespace EM\ExpensesBundle\Entity;

use Symfony\Component\Form\FormBuilder;
use Symfony\Component\Form\AbstractType;

class ChooseCatType extends AbstractType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder->add('name', 'entity', array(
            'class' => 'EMMyFriendsBundle:Category',
            'property' => 'name',
            'empty_value' => 'All items',
            'required' => false,
            'query_builder' => function ($repository)
                { return $repository->createQueryBuilder('cat')
                                    ->select('cat')
                                    ->orderBy('cat.name', 'ASC');
                }, ));
    }

    public function getName()
    {
        return 'choose_category';
    }
}

我在这里创建表单:

namespace EM\ExpensesBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use EM\ExpensesBundle\Entity\Category;
use EM\ExpensesBundle\Entity\ChooseCatType;

class HomeController extends Controller
{
    public function indexAction()
    {
        //Categories
        $cat = new Category();
        $dd_form = $this->createForm(new ChooseCatType(), $cat);
        return $this->render('EMExpensesBundle:Home:index.html.twig', array(
            'dd_form' => $dd_form->createView()));
    }
}

和模板:

{% extends "::base.html.twig" %}

{% block title %}
    Expenses
{% endblock %}

{% block body %}

    <div class="content">

<p> Choose category: </p>

            <form class="cat" action="" method="post" {{ form_enctype(dd_form) }}> 
                {{ form_widget(dd_form.name) }}
                {{ form_rest(dd_form) }}
                <input type="submit" value="Show items" />
            </form>

            <a href=""> Manage Categories </a>

        </div>

{% endblock %}

但是我收到了错误:

Fatal error: Declaration of EM\ExpensesBundle\Entity\ChooseCatType::buildForm() 
must be compatible with that 
of Symfony\Component\Form\FormTypeInterface::buildForm()     
in C:\xampp\htdocs\Expenses\src\EM\ExpensesBundle\Entity\ChooseCatType.php 
on line 9

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

在方法签名中使用FormBuilderInterface

public function buildForm(FormBuilderInterface $builder, array $options)