4

Symfony 2.1 で簡単な連絡先フォームを作成したいだけです。どのように?

ContactForm.php:

namespace frontend\mainBundle\Form;

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

class ContactForm extends AbstractType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder->add('subject', 'textarea');
        $builder->add('email', 'email');
        $builder->add('message', 'textarea');
    }
    public function getName()
    {
        return 'contact';
    }

}

DefaultController.php

namespace frontend\mainBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use mylib\DataFormatChecker;
use frontend\mainBundle\Form\ContactForm;
use Symfony\Component\HttpFoundation\Request;

class DefaultController extends Controller
{

        public function contactAction(Request $request)
    {

        $task = array();
        $form = $this->createFormBuilder(new ContactForm(), $task);  
        if ($request->getMethod() == 'POST') {
        $form->bindRequest($request);

        if ($form->isValid()) {
            // perform some action, such as saving the task to the database

            //return $this->redirect($this->generateUrl('task_success'));
        }
    }
    return $this->render('frontendmainBundle:Default:contact.html.php', array(
        'form' => $form->createView()
    ));
    }
}

エラー: frontend\mainBundle\Form\ContactForm::buildForm() の宣言は、ContactForm の 8 行目の Symfony\Component\Form\FormTypeInterface::buildForm(Symfony\Component\Form\FormBuilderInterface $builder, array $options) と互換性がある必要があります.php。

なにが問題ですか?

申し訳ありませんが、symfony 1.4 に使用されていました

4

1 に答える 1

4

実際、このエラーは symfony とは何の関係もありません。buildForm関数の宣言が基底クラス(AbstractType)の宣言と一致していないために発生します。の最初のパラメーターはbuildFormのインスタンスである必要がありますがFormBuilderInterface、最初のパラメーターは のインスタンスですFormBuilder

// ...
use Symfony\Component\Form\FormBuilderInterface;

class ContactForm extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    // ...
于 2012-12-23T17:00:21.957 に答える