Erwartet argument des Typs "string", "Vendor\NameBundle\Form\EntitynameType" gegeben Symfony 3.0
Weil der Probleme hatte ich mit symfony-version 2.7 (Seite 404-Fehler sofort nach der Installation ein Projekt) begann ich mit Symfony in der version 3.0. Nach einigen kleineren Problemen, die ich herausgefunden, dass "app/console" wird ersetzt durch "bin/console". So ich arbeite jetzt an einem neuen Projekt und habe auch schon den Bau eines neuen bundle mit 1 Entität namens
Codeit/RestaurantBundle && CodeitRestaurantBundle:Reserveren
Format ist annotation, und die Person hat eine id und 1 Feld namens "naam" (string, 255). Ich aktualisiert das schema war, habe ich das generieren der Entitäten von Codeit und wurde danach erfolgreich getan generiert ich eine crud-mit Aktionen schreiben. Das format wurde wieder annotation und das Präfix /reserveren.
Also wenn ich besuchen Sie die Seite web/reserveren, ich bin immer ein show-Seite meiner Person. Leider wenn ich versuche einen neuen Eintrag hinzufügen, bekomme ich die folgende Fehlermeldung:
Erwartet argument des Typs "string", "Codeit\RestaurantBundle\Form\ReserverenType" gegeben
Meine Bundle/Form/ReserverenType.php
<?php
namespace Codeit\RestaurantBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
class ReserverenType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('naam')
;
}
/**
* @param OptionsResolver $resolver
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Codeit\RestaurantBundle\Entity\Reserveren'
));
}
}
Meine Einheit code
<?php
namespace Codeit\RestaurantBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Reserveren
*
* @ORM\Table(name="reserveren")
* @ORM\Entity(repositoryClass="Codeit\RestaurantBundle\Repository\ReserverenRepository")
*/
class Reserveren
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="Naam", type="string", length=255)
*/
private $naam;
/**
* Get id
*
* @return int
*/
public function getId()
{
return $this->id;
}
/**
* Set naam
*
* @param string $naam
*
* @return Reserveren
*/
public function setNaam($naam)
{
$this->naam = $naam;
return $this;
}
/**
* Get naam
*
* @return string
*/
public function getNaam()
{
return $this->naam;
}
}
InformationsquelleAutor Gijsberts | 2015-12-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Formen haben sich ziemlich geändert in Version 3.0. Könnten Sie besser dran kleben mit 2,8 für jetzt.
Du hast es nicht zeigen, aber ich vermute, basierend auf der Fehlermeldung, dass der controller code sieht wie folgt aus:
Ist die 2.x Art, Dinge zu tun. 3.x verwenden:
http://symfony.com/doc/current/book/forms.html#creating-form-classes
Nichts falsch mit der Verwendung 3.x für ein neues Projekt. Just bewusst sein, dass schon ein bisschen die S2 Informationen gibt, gilt dann nicht mehr.
vielen Dank, war, verrückt zu werden, warum wurde das Formular nicht funktioniert und jetzt weiß ich.
Danke. Dies löst mein problem.
InformationsquelleAutor Cerad
versuchen mit:
stattdessen
Und fügen Sie den
use
Aussage:Motivation: von der upgrade-Anleitung:
Hoffe, dass dies helfen
Jetzt verstehe ich die @cerad Antwort, dass das Feld, das ich post sind Feld-Typ zu Raten (nicht angeben müssen Sie den Typ) aber das wichtigste Formular, das Sie tun müssen, erklären die (Klassen -) Typ
InformationsquelleAutor Matteo
Versuchen wie diesem:
InformationsquelleAutor scoolnico
fügen Sie diese zu Ihrem Unternehmens-Klasse ersetzen Sie name durch ein Attribut, das zu Ihnen passt.
return $this->name;
imreturn $this->naam
? Weil das nicht funktioniert.. leider.. : (Können Sie Ihre Unternehmens-code?
Ja, jetzt in meiner Frage oben!
oh, das ist eine andere Geschichte. habe Ihr versucht ->add('naam','text')
Ja, sogar 'string'
InformationsquelleAutor Seif Sayed