Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 可捕获的致命错误:无法将类代理的对象\\uuuu CG\uuuuu\AppBundle\Entity\Modelo转换为字符串_Php_Symfony_Doctrine Orm_Symfony2 Easyadmin - Fatal编程技术网

Php 可捕获的致命错误:无法将类代理的对象\\uuuu CG\uuuuu\AppBundle\Entity\Modelo转换为字符串

Php 可捕获的致命错误:无法将类代理的对象\\uuuu CG\uuuuu\AppBundle\Entity\Modelo转换为字符串,php,symfony,doctrine-orm,symfony2-easyadmin,Php,Symfony,Doctrine Orm,Symfony2 Easyadmin,我从Symfony 3和EasyAdminBundle开始。我的问题是,当我试图用外键编辑或创建实体时,我遇到了一个异常: “可捕获的致命错误:类的对象 代理\uuuu CG\uuuuu\AppBundle\Entity\Modelo无法转换为 字符串500内部服务器错误-中的ContextErrorException 供应商\symfony\symfony\src\symfony\Bridge\doctor\Form\Type\DoctrineType.php 第59行 VehicleuloT

我从Symfony 3和EasyAdminBundle开始。我的问题是,当我试图用外键编辑或创建实体时,我遇到了一个异常:

“可捕获的致命错误:类的对象 代理\uuuu CG\uuuuu\AppBundle\Entity\Modelo无法转换为 字符串500内部服务器错误-中的ContextErrorException 供应商\symfony\symfony\src\symfony\Bridge\doctor\Form\Type\DoctrineType.php 第59行

VehicleuloType.php

namespace AppBundle\Form;

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

class VehiculoType extends AbstractType
{
/**
 * {@inheritdoc}
 */
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add('patente')->add('modelo', 'entity');
}

/**
 * {@inheritdoc}
 */
public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => 'AppBundle\Entity\Vehiculo'
    ));
}

/**
 * {@inheritdoc}
 */
public function getBlockPrefix()
{
    return 'appbundle_vehiculo';
}
public function __toString()
{
    return (string) $this->getVehiculo();
}

}
和我的实体 Vehiculo.php
namespace AppBundle\Entity;
/*** Vehiculo*/
class Vehiculo{
/**
 * @var int
 */
private $id;

/**
 * @var string
 */
private $patente;


/**
 * Get id
 *
 * @return int
 */
public function getId()
{
    return $this->id;
}

/**
 * Set patente
 *
 * @param string $patente
 *
 * @return Vehiculo
 */
public function setPatente($patente)
{
    $this->patente = $patente;

    return $this;
}

/**
 * Get patente
 *
 * @return string
 */
public function getPatente()
{
    return $this->patente;
}
/**
 * @var string
 */
private $oneToOne;


/**
 * Set oneToOne
 *
 * @param string $oneToOne
 *
 * @return Vehiculo
 */
public function setOneToOne($oneToOne)
{
    $this->oneToOne = $oneToOne;

    return $this;
}

/**
 * Get oneToOne
 *
 * @return string
 */
public function getOneToOne()
{
    return $this->oneToOne;
}
/**
 * @var \AppBundle\Entity\Modelo
 */
private $modelo;


/**
 * Set modelo
 *
 * @param \AppBundle\Entity\Modelo $modelo
 *
 * @return Vehiculo
 */
public function setModelo(\AppBundle\Entity\Modelo $modelo = null)
{
    $this->modelo = $modelo;

    return $this;
}

/**
 * Get modelo
 *
 * @return \AppBundle\Entity\Modelo
 */
public function getModelo()
{
    return $this->modelo;
}
}

您的
modelo
字段应定义选项,以便正确显示允许标识实体的内容:

$builder->add('patente')->add('modelo', 'entity', [
    'choice_label' => 'name'
]);

name
替换为由
Modelo
实体实现的属性。

您需要覆盖实体中的_toString()方法

easyAdmin捆绑包试图向您显示在“新建”和“编辑”视图中映射的实体。 但它不知道如何表现出来

只需将以下内容添加到实体中即可解决此问题(如果另一个字符串更有意义,则可以替换patente):

在Modelo类中实现_toString()方法,并让其返回对象的字符串表示形式(类似于名称)
$builder->add('patente')->add('modelo', 'entity', [
    'choice_label' => 'name'
]);
    public function __toString()
{
    return $this->patente;
}