-1

Symfony 2 のプロジェクトに問題があり、このエラーが発生します

Catchable Fatal Error: Object of class Nicearma\MemesBundle\Entity\Usuario could not be converted to string in C:\wamp\www\24memes\vendor\doctrine-dbal\lib\Doctrine\DBAL\Statement.php line 131

問題は、UsuarioInfo クラスからフォームを実行しようとしていて、このクラスには 1 つのオブジェクト Usuario があり、フォームは正常に動作しますが、情報を送信したときにメッセージが表示され、解決策が見つかりません。これを修正する方法を誰もが知っています? 私はこのファイルを持っています

registro.html.twig

<div class="usuario">
{{ form_row(form.usuario) }}
</div>
{{ form_rest(form) }}

Usuario.php

namespace Nicearma\MemesBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Validator\Constraints as Assert;

/**
 * Nicearma\MemesBundle\Entity\Usuario
 *
 * @ORM\Table(name="usuario")
 * @ORM\Entity(repositoryClass="Nicearma\MemesBundle\Repository\Usuario")
 */
class Usuario implements UserInterface
{
    /**
     * @var integer $id
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var string $nombre
     * @Assert\Type(type="String") 
     * @Assert\MaxLength(255)
     * @Assert\NotBlank
     * @ORM\Column(name="nombre", type="string", length=255, nullable=false)
     */
    private $nombre;

     /**
     * @var string $clave
     * @Assert\NotBlank
     * @Assert\Type(type="String")
     * @Assert\MaxLength(255)
     * @ORM\Column(name="clave", type="string", length=255, nullable=false)
     */
    private $clave;

    /**
     * @var integer $punto
     *
     * @ORM\Column(name="punto", type="integer", nullable=false)
     */
    private $punto;

    /**
     * @var UsuarioEstado
     *
     * @ORM\ManyToOne(targetEntity="UsuarioEstado")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="id_usuario_estado", referencedColumnName="id")
     * })
     */
    private $UsuarioEstado;

     /**
     * @var IdUsuarioEstado
     * @ORM\Column(name="id_usuario_estado", type="integer", nullable=false)
     * })
     */
    private $idUsuarioEstado;

    /**
     * @var UsuarioTipo
     *
     * @ORM\ManyToOne(targetEntity="UsuarioTipo")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="id_usuario_tipo", referencedColumnName="id")
     * })
     */
    private $UsuarioTipo;

   /**
     * @var idUsuarioTipo
     * @ORM\Column(name="id_usuario_tipo", type="integer", nullable=false)
     */

    private $idUsuarioTipo;

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

    /**
     * Set nombre
     *
     * @param string $nombre
     */
    public function setNombre($nombre)
    {
        $this->nombre = $nombre;
    }

    /**
     * Get nombre
     *
     * @return string 
     */
    public function getNombre()
    {
        return $this->nombre;
    }

    /**
     * Set punto
     *
     * @param integer $punto
     */
    public function setPunto($punto)
    {
        $this->punto = $punto;
    }

    /**
     * Get punto
     *
     * @return integer 
     */
    public function getPunto()
    {
        return $this->punto;
    }

    /**
     * Set UsuarioEstado
     *
     * @param Nicearma\MemesBundle\Entity\UsuarioEstado $idUsuarioEstado
     */
    public function setUsuarioEstado(\Nicearma\MemesBundle\Entity\UsuarioEstado $UsuarioEstado)
    {
        $this->UsuarioEstado = $UsuarioEstado;
    }

    /**
     * Get UsuarioEstado
     *
     * @return Nicearma\MemesBundle\Entity\UsuarioEstado 
     */
    public function getUsuarioEstado()
    {
        return $this->UsuarioEstado;
    }
     /**
     * Set idUsuarioEstado
     *
     * @param integer $idUsuarioEstado
     */
    public function setIdUsuarioEstado( $idUsuarioEstado)
    {
        $this->idUsuarioEstado = $idUsuarioEstado;
    }

    /**
     * Get idUsuarioEstado
     *
     * @return integer
     */
    public function getIdUsuarioEstado()
    {
        return $this->idUsuarioEstado;
    }

    /**
     * Set UsuarioTipo
     *
     * @param Nicearma\MemesBundle\Entity\UsuarioTipo $idUsuarioTipo
     */
    public function setUsuarioTipo(\Nicearma\MemesBundle\Entity\UsuarioTipo $UsuarioTipo)
    {
        $this->UsuarioTipo = $UsuarioTipo;
    }

    /**
     * Get UsuarioTipo
     *
     * @return Nicearma\MemesBundle\Entity\UsuarioTipo 
     */
    public function getUsuarioTipo()
    {
        return $this->UsuarioTipo;
    }

    /**
     * Set idUsuarioTipo
     *
     * @param integer $idUsuarioTipo
     */
    public function setIdUsuarioTipo( $idUsuarioTipo)
    {
        $this->idUsuarioTipo = $idUsuarioTipo;
    }

    /**
     * Get idUsuarioTipo
     *
     * @return integer
     */
    public function getIdUsuarioTipo()
    {
        return $this->idUsuarioTipo;
    }

    public function equals(UserInterface $user)
    {
        return $this->username === $user->getUsername();
    }

    public function eraseCredentials() {

    }

    public function getPassword() {
        return $this->clave;
    }

    public function getRoles() {
       $this->idUsuarioTipo->getTipo();
    }

    public function getSalt() {
        return null;
    }

    public function getUsername() {
        return $this->nombre;
    }

    /**
     * Set clave
     *
     * @param string $clave
     */
    public function setClave($clave)
    {
        $this->clave = $clave;
    }

    /**
     * Get clave
     *
     * @return string 
     */
    public function getClave()
    {
        return $this->clave;
    }
}

UsuarioType.php

namespace Nicearma\MemesBundle\Form;

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

class UsuarioType extends AbstractType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder
            ->add('nombre')
            ->add('clave')
        ;
    }
    public function getDefaultOptions(array $options)
    {
    return array(
        'data_class' => 'Nicearma\MemesBundle\Entity\Usuario',
    );
    }
    public function getName()
    {
        return 'Usuario';
    }
}

usuarioInfo.php

namespace Nicearma\MemesBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
 * Nicearma\MemesBundle\Entity\UsuarioInfo
 *
 * @ORM\Table(name="usuario_info")
 * @ORM\Entity
 */
class UsuarioInfo
{
    /**
     * @var integer $id
     * 
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var string $correo
     * Assert\Email
     * @ORM\Column(name="correo", type="string", length=255, nullable=false)
     */
    private $correo;

    /**
     * @var Usuario
     * @Assert\Type(type="Nicearma\MemesBundle\Entity\Usuario")
     * @ORM\OneToOne(targetEntity="Usuario")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="id_usuario", referencedColumnName="id")
     * })
     */
    private $Usuario;

     /**
     * @var idUsuario
     * @ORM\Column(name="id_usuario", type="integer", nullable=false)
     */
    private $idUsuario;


    /**
     * @var Nacionalidad
     * @Assert\Type(type="Nicearma\MemesBundle\Entity\Nacionalidad")
     * @ORM\ManyToOne(targetEntity="Nacionalidad")
     * @ORM\JoinColumns({
     *   @ORM\JoinColumn(name="id_pais", referencedColumnName="id")
     * })
     */
     private $Pais;



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

    /**
     * Set correo
     *
     * @param string $correo
     */
    public function setCorreo($correo)
    {
        $this->correo = $correo;
    }

    /**
     * Get correo
     *
     * @return string 
     */
    public function getCorreo()
    {
        return $this->correo;
    }

    /**
     * Set Usuario
     *
     * @param Nicearma\MemesBundle\Entity\Usuario $Usuario
     */
    public function setUsuario(\Nicearma\MemesBundle\Entity\Usuario $Usuario)
    {
        $this->Usuario = $Usuario;
    }

    /**
     * Get Usuario
     *
     * @return Nicearma\MemesBundle\Entity\Usuario 
     */
    public function getUsuario()
    {
        return $this->Usuario;
    }

    /**
     * Set Pais
     *
     * @param Nicearma\MemesBundle\Entity\Nacionalidad $Pais
     */
    public function setPais(\Nicearma\MemesBundle\Entity\Nacionalidad $Pais)
    {
        $this->Pais = $Pais;
    }

    /**
     * Get Pais
     *
     * @return Nicearma\MemesBundle\Entity\Nacionalidad 
     */
    public function getPais()
    {
        return $this->Pais;
    }
}

usuarioInfoType.php

namespace Nicearma\MemesBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilder;
use Doctrine\ORM\EntityRepository;

class UsuarioInfoType extends AbstractType
{
    public function buildForm(FormBuilder $builder, array $options)
    {
        $builder
            ->add('correo')
            ->add('pais', 'entity', array ('class'=>'Nicearma\\MemesBundle\\Entity\\Nacionalidad','property'=>'nom_pais'))
            ->add('usuario',new UsuarioType);    
        ;
    }

    public function getDefaultOptions(array $options)
    {
    return array(
        'data_class' => 'Nicearma\MemesBundle\Entity\UsuarioInfo',
    );
    }

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

そしてコントローラーは

public function registroAction(Request $peticion){
        $regUs= new \Nicearma\MemesBundle\Entity\UsuarioInfo();
        $formulario = $this->createForm(new \Nicearma\MemesBundle\Form\UsuarioInfoType(),  $regUs);
        if ($peticion->getMethod() == 'POST') {
            $formulario->bindRequest($peticion);
            if ($formulario->isValid()) {
               // $regUs->setIdUsuario(1);
                $em = $this->getDoctrine()->getEntityManager();
                $
                $em->persist($regUs);
                $em->flush();
                $base->flush();
               return $this->redirect($this->generateUrl('DenunciaEnviada'));
            }else{

            }
        }
        return $this->render('NicearmaMemesBundle:Usuario:usuarioRegistro.html.twig', array('form' => $formulario->createView(),'titulo'=>'Crear usuario','descripcion'=>'usuario','claves'=>'us','nombre'=>'Prueba usuario'));
    }
4

2 に答える 2

2

一対一の関係では、「JoinColumns(JoinColumn)」を行っている代わりに、JoinColumn アノテーションを使用する必要があります。doctrine orm ドキュメントhttp://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/association-mapping.html#one-to-one-bidirectionalから例を見ることができます

したがって、最初に UsuarioInfo の「Usuario」のプロパティ アノテーションを更新してみてください。

/**
 * @var Usuario
 * @Assert\Type(type="Nicearma\MemesBundle\Entity\Usuario")
 * @ORM\OneToOne(targetEntity="Usuario")
 * @ORM\JoinColumns({
 *   @ORM\JoinColumn(name="id_usuario", referencedColumnName="id")
 * })
 */
private $Usuario;

/**
 * @var Usuario
 * @Assert\Type(type="Nicearma\MemesBundle\Entity\Usuario")
 * @ORM\OneToOne(targetEntity="Usuario")
 * @ORM\JoinColumn(name="id_usuario", referencedColumnName="id")
 */
private $Usuario;

同じことが、Usuario の "UsuarioEstado"、"UsuarioTipo" プロパティにも適用されます。ManyToOne の注釈の例を参照してくださいhttp://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/association-mapping.html#many-to-one-unidirectional

したがって、適切な注釈を使用していることを確認して、エンティティを適切に構成していることを確認してから、もう一度やり直してください:)

于 2012-07-05T23:11:14.733 に答える