Создание пользовательского типа формы в symfony2: невозможно переписать buildView () - PullRequest
2 голосов
/ 29 февраля 2012

Я создаю пользовательский тип формы в symfony2.Но каждый раз, когда я пытаюсь перезаписать метод buildForm (), я получаю эту ошибку:

Неустранимая ошибка: объявление SeduceMe \ SiteBundle \ Form \ Type \ UniFormTextType :: buildView () должно быть совместимо с этимSymfony \ Component \ Form \ FormTypeInterface :: buildView () в /Users/alexander/Projekte/SeduceMe/serversymfony204/src/SeduceMe/SiteBundle/Form/Type/UniFormTextType.php в строке 33 * 100 * * 6 * 100 * * *Конечно, я понимаю, что это значит.Я даже скопировал подпись метода из упомянутого интерфейса.Все тот же.Это мой класс:

namespace SeduceMe\SiteBundle\Form\Type;

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

class UniFormTextType extends AbstractType 
{
    public function getDefaultOptions(array $options)
    {
        return array('placeholder' => null);
    }

    public function getParent(array $options)
    {
        return 'text';
    }

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

    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder->setAttribute('placeholder', $options['placeholder']);
    }

    public function buildView(FormView $view, FormInterface $form)
    {
        $view->set('placeholder', $form->getAttribute('placeholder'));
    }
}

Ответы [ 2 ]

3 голосов
/ 29 февраля 2012

Необходимо добавить операторы использования для FormView и FormInterface.

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;
use Symfony\Component\Form\FormView;
use Symfony\Component\Form\FormInterface;
use Symfony\Component\Form\FormError;
use Symfony\Component\Form\CallbackValidator;
use Symfony\Component\Form\FormValidatorInterface;
1 голос
/ 21 октября 2012

В этом разделе указан документ Symfony:

http://symfony.com/doc/2.0/book/forms.html#creating-form-classes

FormTypeInterface::buildView() теперь требует FormBuilderInterface, а не FormBuilder, на что жалуется эта ошибка.

Итак, вы должны сделать:

use Symfony\Component\Form\FormBuilderInterface;

И использовать это в вашем объявлении метода также так:

public function buildForm(FormBuilderInterface $builder, array $options)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...