0

This is my file:

<?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';
    }
}

Here I create the form:

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()));
    }
}

and template:

{% 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 %}

but I get an error:

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

Any ideas?

1 Answer 1

1

Use FormBuilderInterface in your method signature:

public function buildForm(FormBuilderInterface $builder, array $options)
Sign up to request clarification or add additional context in comments.

2 Comments

This was the first thing I tried, but with no success :( The same error message stays.
@Faery you'll also need to add a use Symfony\Component\Form\FormBuilderInterface statement

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.