2012-04-17 13 views
10

Dentro de mi proyecto Symfony2 he intentado generar dinámicamente las entidades utilizan dentro de mi tipo de formulario, pasando por alto el uso de generador de consultas, etc.Ilegal tipo de desplazamiento en isset o vacío en la línea de EntityChoiceList.php 273

Para La propiedad de las opciones de entidad. Estoy suministrando una matriz de entidades para ser utilizadas. En la carga de la página todo parece estar bien y se muestra el contenido correcto. Sin embargo, en el envío de formularios consigo

Illegal offset tipo de isset o vacío en la línea de EntityChoiceList.php 273

at ErrorHandler ->handle ('2', 'Illegal offset type in isset or empty', 
'..../Symfony/Bridge/Doctrine/Form/ChoiceList/EntityChoiceList.php', '273', array('key'  => object(myEntity))) in ..../Symfony/Bridge/Doctrine/Form/ChoiceList/EntityChoiceList.php at line 273 
      ..... 
      return isset($entities[$key]) ? $entities[$key] : null; 
      ..... 

lo que me ha dejado perplejos es si añado var_dump (isset ($ this-> entidades [$ key])); exit; sobre esta línea me devuelven 'bool (verdadero)' que para mí significa que la clave existe.

Como antecedentes que han intentado extender el EntityType, para mayor facilidad dentro de mi proyecto y ha añadido:

public function getDefaultOptions(array $options) 
{ 
    $defaultOptions = array(
     'em'    => null, 
     'class'    => 'Acme\TestBundle\Entity\myEntity', 
     'property'   => null, 
     'query_builder'  => null, 
     'choices'   => $this->myEntityArray, 
    ); 

    $options = array_replace($defaultOptions, $options); 
    $defaults = parent::getDefaultOptions($options);   
    return $defaults; 
}  

Tiene cualquiera cualquier idea por la que conseguir este error, o estoy pasando por mi problema de todo mal de todos modos ¿Intentando pasar una serie de entidades a las elecciones?

Respuesta

-2

Supongo que ya resolvió esto de otra manera, y esta tampoco es una respuesta real.

Pero supongo que $ entidades no es una matriz en ese punto, o $ clave no es un valor escalar. Para la depuración se debe utilizar:

<?php 
if (!is_array($entities) || !is_scalar($key)) { 
    var_dump($key, $entities));exit; 
} 

Cómo ahora a prueba esta, que dejaría en el primer paso en esa función. Los formularios de Symfony utilizan una gran cantidad de recursiones, por lo que una salida en cualquier función no suele ser útil.

43

Si usted está recibiendo este al intentar quitar un elemento de un ArrayCollection probablemente se deba a que has proporcionado:

$list->remove($item) en lugar de $list->removeElement($item)

+7

me siento muy tonto para perder 2 horas en esto. ¡Definitivamente debería dejar de funcionar hasta tarde! : D – tftd

+0

¿Por qué no se acepta esta respuesta? Eso funciona exactamente! – Sithu

Cuestiones relacionadas