fabricawebs
Blog donde podrás encontrar el árticulo o tutorial que estas buscando sobre PHP, JavaScript, XML, Flash, Ruby on Rails, o desarrollo web en general.

Symfony 2.1 Expected argument of type "object, array or empty", "string" given

By Carlos
Ayer actualicé mi Symfony 2.1.x y algunos de los formularios empezaron a  fallar, al final dí con el problema: los custom types.

En la actualización de Julio de 2012 se han modificado unas cuantas cosas, puedes verlas todas aqui https://github.com/symfony/symfony/blob/master/UPGRADE-2.1.md , en mi caso solo tuve que actualizar lo siguiente:

ANTES:


namespace Fourcats\AdminBundle\Form\Type;

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

class ImageType extends AbstractType
{
    public function getDefaultOptions()
    {
        return array(
            // cannot have a required attribute
            'required'       => false,
            // Pass errors to the parent
            'error_bubbling' => true,
            'class'          => 'uploader'

        );
    }

    public function getParent()
    {
        return 'field';
    }

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



DESPÚES


namespace Fourcats\AdminBundle\Form\Type;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;

class ImageType extends AbstractType
{


    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'compound' => false,
            // cannot have a required attribute
            'required'       => false,
            // Pass errors to the parent
            'error_bubbling' => true,
            'class'          => 'uploader'

        )
        );
    }

    public function getParent()
    {
        return 'form';
    }

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


La clase FieldType fue deprecated ahora debe usarse siempre FormType, por eso debe cambiarse en el método GetParent, por otra parte el método getDefaultOptions también fue deprecated ahora hay que usar setDefaultOptions, y recuerda incluir con use la clase OptionsResolverInterface.
 

1 comment so far.

  1. Carlos 29 de octubre de 2012, 2:02
    test

Something to say?