Категория не может быть преобразована в строку

Для начала я действительно новичок в программировании, особенно в Symfony / ORM. Я получаю уроки на голландском языке. Вот почему голландское именование, но у меня проблемы с получением шаблона веточки, чтобы показать отношение многие к одному. Я продолжаю получать сообщения об ошибках, которые не могут быть преобразованы в строку, я уже несколько часов гуглю и получаю еще одну ошибку, что переменная равна нулю. Тем не менее, это не может быть так. Я добавлю коды ниже.

Я получаю ошибки;

[1/2] ContextErrorException: Catchable Fatal Error: Объект класса Proxies__CG __ \ AppBundle \ Entity \ Category не может быть преобразован в строку

а также

[2/2] Twig_Error_Runtime: возникла исключительная ситуация во время рендеринга шаблона («Catchable Fatal Error: объект класса Proxies__CG __ \ AppBundle \ Entity \ Category не может быть преобразован в строку»).

Artikel.php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Doctrine\Common\Collections\ArrayCollection;
//link naar tabel
/**
* Artikel
*
* @ORM\Table(name="artikel")
* @ORM\Entity(repositoryClass="AppBundle\Repository\ArtikelRepository")
*/
class Artikel
{
//class artikel met alle items die in de tabel staan.
//per items staat aangegeven wat voor type het is en aanvullende gegevens.
/**
* @var int
*
* @ORM\Column(name="Artikelnummer", type="integer", unique=true)
* @ORM\Id
*/
private $artikelnummer;

/**
* @var string
*
* @ORM\Column(name="Omschrijving", type="string", length=255, nullable=true)
*/
private $omschrijving;

/**
* @var string
* @ORM\ManyToOne(targetEntity="Categorie", inversedBy="artikelen")
* @ORM\JoinColumn(name="categorie", referencedColumnName="id")
*/

private $categorie;

/**
* @var string
*
* @ORM\Column(name="Technischespecificaties", type="string", length=255 , nullable=true)
*/
private $technischespecificaties;

/**
* @var string
*
* @ORM\Column(name="Status", type="string", length=12, nullable=false)
*/
private $status;

/**
* @var string
*
* @ORM\Column(name="magazijnlocatie", type="string", length=6, nullable=false)
* @Assert\Length(
*      min = 6,
*      max = 6,
*      exactMessage = "Invoerwaarde te lang")
* @Assert\Regex(
*    pattern = "/^20|[0-1]{1}[0-9]{1}\/[A-Z][0]{1}[0-9]{1}|10$/i",
*    match=true,
*    message="Ongeldige locatie [ERROR1]")
* @Assert\Regex(
*    pattern = "/^[2]{1}[1-9]{1}\/[A-Z]{1}[0-9]{1}$/i",
*    match=false,
*    message="Ongeldige locatie [ERROR2]")
* @Assert\Regex(
*    pattern = "/^[3-9]{1}[0-9]{1}\/[A-Z][0-9]{1}$/i",
*    match=false,
*    message="Ongeldige locatie [ERROR3]")
* @Assert\Regex(
*    pattern = "/^[0-1]{1}[0-9]{1}\/[A-Z][1]{1}[1-9]{1}$/i",
*    match=false,
*    message="Ongeldige locatie [ERROR4]")
* @Assert\Regex(
*    pattern = "/^[0-1]{1}[0-9]{1}\/[A-Z][2-9]{1}[0-9]{1}$/i",
*    match=false,
*    message="Ongeldige locatie [ERROR5]")
* @Assert\Regex(
*    pattern = "/^[0-9A-Za-z]+$/i",
*    match=false,
*    message="Ongeldige locatie [ERROR6]")
*/
private $magazijnlocatie;

/**
* @var int
*
* @ORM\Column(name="Inkoopprijs", type="decimal", precision=10, scale=2)
*/
private $inkoopprijs;

/**
* @var string
*
* @ORM\Column(name="CodeVervangendArtikel", type="integer")
*/
private $CodeVervangendArtikel;

/**
* @var string
*
* @ORM\Column(name="MinimumVoorraad", type="string")
*/
private $minimumVoorraad;

/**
* @var string
*
* @ORM\Column(name="VoorraadInAantal", type="integer")
*/
private $voorraadInAantal;

/**
* @var string
*
* @ORM\Column(name="Bestelserie", type="integer")
*/
private $bestelserie;//set en gets van de items
/**
* Set artikelnummer
*
* @param integer $artikelnummer
*
* @return Artikel
*/
public function setArtikelnummer($artikelnummer)
{
$this->artikelnummer = $artikelnummer;

return $this;
}

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

/**
* Set categorie
*
* @param string $categorie
*
* @return Artikel
*/
public function setCategorie($categorie)
{
$this->categorie = $categorie;

return $this;
}
public function __toString()
{     return $this->categorie; }
/**
* Get categorie
*
* @return string
*/public function getCategorie()
{
return $this->categorie;
}

/**
* Set omschrijving
*
* @param string $omschrijving
*
* @return Artikel
*/
public function setOmschrijving($omschrijving)
{
$this->omschrijving = $omschrijving;

return $this;
}

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

/**
* Set technischespecificaties
*
* @param string $technischespecificaties
*
* @return Artikel
*/
public function setTechnischespecificaties($technischespecificaties)
{
$this->technischespecificaties = $technischespecificaties;

return $this;
}

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

/**
* Set status
*
* @param string $status
*
* @return Artikel
*/
public function setStatus($status)
{
$this->status = $status;

return $this;
}

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

/**
* Set magazijnlocatie
*
* @param string $magazijnlocatie
*
* @return Artikel
*/
public function setMagazijnlocatie($magazijnlocatie)
{
$this->magazijnlocatie = $magazijnlocatie;

return $this;
}

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

/**
* Set inkoopprijs
*
* @param integer $inkoopprijs
*
* @return Artikel
*/
public function setInkoopprijs($inkoopprijs)
{
$this->inkoopprijs = $inkoopprijs;

return $this;
}

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

/**
* Set CodeVervangendArtikel
*
* @param string $CodeVervangendArtikel
*
* @return Artikel
*/
public function setCodeVervangendArtikel($CodeVervangendArtikel)
{
$this->CodeVervangendArtikel = $CodeVervangendArtikel;

return $this;
}

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

/**
* Set minimumVoorraad
*
* @param string $minimumVoorraad
*
* @return Artikel
*/
public function setMinimumVoorraad($minimumVoorraad)
{
$this->minimumVoorraad = $minimumVoorraad;

return $this;
}

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

/**
* Set voorraadInAantal
*
* @param string $voorraadInAantal
*
* @return Artikel
*/
public function setVoorraadInAantal($voorraadInAantal)
{
$this->voorraadInAantal = $voorraadInAantal;

return $this;
}

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

/**
* Set bestelserie
*
* @param string $bestelserie
*
* @return Artikel
*/
public function setBestelserie($bestelserie)
{
$this->bestelserie = $bestelserie;

return $this;
}

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

Categorie.php

<?php

namespace AppBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
use Doctrine\Common\Collections\ArrayCollection;

/**
* Categorie
*
* @ORM\Table(name="categorie")
* @ORM\Entity(repositoryClass="AppBundle\Repository\CategorieRepository")
*/
class Categorie
{

/**
* @var string
*
* @ORM\Column(name="id", type="string", length=20, unique=true)
* @ORM\Id
*/
private $id;

/**
* @var string
*
* @ORM\Column(name="beschrijving", type="string", length=255)
*/
private $beschrijving;

/**
* @ORM\OneToMany(targetEntity="Artikel", mappedBy = "categorie")
*/
private $artikelen;

/**
* @var string
*
* @ORM\Column(name="magazijnlocatie", type="string", length=6, nullable=false)
* @Assert\Length(
*      min = 6,
*      max = 6,
*      exactMessage = "Invoerwaarde te lang")
* @Assert\Regex(
*    pattern = "/^20|[0-1]{1}[0-9]{1}\/[A-Z][0]{1}[0-9]{1}|10$/i",
*    match=true,
*    message="Ongeldige locatie [ERROR1]")
* @Assert\Regex(
*    pattern = "/^[2]{1}[1-9]{1}\/[A-Z]{1}[0-9]{1}$/i",
*    match=false,
*    message="Ongeldige locatie [ERROR2]")
* @Assert\Regex(
*    pattern = "/^[3-9]{1}[0-9]{1}\/[A-Z][0-9]{1}$/i",
*    match=false,
*    message="Ongeldige locatie [ERROR3]")
* @Assert\Regex(
*    pattern = "/^[0-1]{1}[0-9]{1}\/[A-Z][1]{1}[1-9]{1}$/i",
*    match=false,
*    message="Ongeldige locatie [ERROR4]")
* @Assert\Regex(
*    pattern = "/^[0-1]{1}[0-9]{1}\/[A-Z][2-9]{1}[0-9]{1}$/i",
*    match=false,
*    message="Ongeldige locatie [ERROR5]")
* @Assert\Regex(
*    pattern = "/^[0-9A-Za-z]+$/i",
*    match=false,
*    message="Ongeldige locatie [ERROR6]")
*/
private $magazijnlocatie;

/**
* Set id
*
* @param string $id
*
* @return Categorie
*/
public function setId($id)
{
$this->id = $id;

return $this;
}

/**
* Get id
*
* @return string
*/
public function getId()
{
return $this->id;
}
public function toString()
{
return $this->getId();
}
/**
* Set beschrijving
*
* @param string $beschrijving
*
* @return Categorie
*/
public function setBeschrijving($beschrijving)
{
$this->beschrijving = $beschrijving;

return $this;
}

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

/**
* Set magazijnlocatie
*
* @param string $magazijnlocatie
*
* @return Artikel
*/
public function setMagazijnlocatie($magazijnlocatie)
{
$this->magazijnlocatie = $magazijnlocatie;

return $this;
}

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

public function _construct()
{
$this->artikelen = new ArrayCollection();
}
}

контроллер

use Symfony\Component\HttpFoundation\Response;//use van de entiteiten
use AppBundle\Entity\Artikel;
use AppBundle\Form\Type\Artikel0Type;
use AppBundle\Form\Type\ArtikelType;
use AppBundle\Entity\Categorie;class ArtikelController extends Controller
{/**
* @Route("/artikel/alle", name="alleartikelen")
*/

Public function alleArtikelen(Request $request) {
$artikelen = $this->getDoctrine()->getRepository("AppBundle:Artikel")->findAll();
return new Response($this->render('artikel.html.twig', array('artikelen' => $artikelen)));

}/**
* @Route("/artikel/nieuw", name="nieuwartikel")
*/
public function nieuwArtikel(Request $request) {
$nieuwArtikel = new Artikel();
$form = $this->createForm(ArtikelType::class, $nieuwArtikel);

$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($nieuwArtikel);
$em->flush() ;
return $this->redirect($this->generateurl("alleartikelen")) ;
}
return new Response($this->render('form.html.twig', array('form' => $form->createView())));
}

/**
* @Route("/artikel/wijzig/{artikelnummer}", name="artikelwijzigen")
*/
public function wijzigArtikel(Request $request, $artikelnummer) {

$bestaandArtikel = $this->getDoctrine()->getRepository("AppBundle:Artikel")->find($artikelnummer);
$form = $this->createForm(Artikel0Type::class, $bestaandArtikel);

$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($bestaandArtikel);
$em->flush() ;
return $this->redirect($this->generateurl("alleartikelen", array("artikelnummer"=>$bestaandArtikel->getArtikelnummer()))) ;
}
return new Response($this->render('form.html.twig', array('form' => $form->createView())));
}

/**
* @Route("/artikel/verwijder/{artikelnummer}", name="artikelverwijderen")
*/
public function verwijderArtikel(Request $request, $artikelnummer) {
$em = $this->getDoctrine()->getManager();
$bestaandArtikel = $em->getRepository("AppBundle:Artikel")->find($artikelnummer);
$em->remove($bestaandArtikel);
$em->flush() ;
return $this->redirect($this->generateurl("alleartikelen"));
}
}

А потом сама веточка;

{% extends 'base.html.twig' %}
{% block body %}
<h1>Overzicht Artikelen</h1>
<h2><a href="{{ path('nieuwartikel',{}) }}">Nieuw Artikel</a></h2>
<ol>
{% for artikel in artikelen %}
<li style="color:darkgreen">
Artikelnummer: {{artikel.artikelnummer}} <br>
Omschrijving: {{artikel.omschrijving}} <br>
Technischespecificaties: {{artikel.technischespecificaties}} <br>
Categorie: {{artikel.categorie}} <br>
Magazijnlocatie: {{artikel.magazijnlocatie}} <br>
Inkoopprijs: {{artikel.inkoopprijs}} <br>
CodeVervangendArtikel: {{artikel.CodeVervangendArtikel}} <br>
MinimumVoorraad: {{artikel.minimumVoorraad}} <br>
VoorraadInAantal: {{artikel.voorraadInAantal}} <br>
Bestelserie: {{artikel.bestelserie}} <br>

<a href="{{ path('artikelwijzigen',
{'artikelnummer':artikel.artikelnummer}) }}">Wijzig</a>
<a href="{{ path('artikelverwijderen',
{'artikelnummer':artikel.artikelnummer}) }}">Verwijder</a>
</li><br>
{% endfor %}
<ol>
{% endblock %}

0

Решение

Метод toString в сущности Categorie недействительно, должно быть: __toString,

Просмотрите конструктор той же сущности тоже, должно быть __construct() не _construct()

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]