In Symfony 2.x ich auf diese Weise verwendete Formular anzuzeigen mit benutzerdefinierten FeldernSymfony2.x zu 3.x Forms
Productformularklasse
public function __construct(array $aCustomFieldsList)
{
$this->aCustomFields = $aCustomFieldsList;
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', TextType::class, [ "label" => "Name" ])
->add('price', MoneyType::class, [ "label" => "Price" ]);
foreach($this->aCustomFields as $n=>$sCustomField)
{
$builder->add($sCustomField, TextType::class, [ "label" => {$sCustomField}"]);
}
$builder->add('save', SubmitType::class, [ "label" => "Save" ]);
}
Und in der Steuerung
$form = $this->createForm(new ProductType($aCustomFields), $product);
In Symfony 3.x erwartet das erste Argument der Methode createForm() jedoch nicht das instanzierte Objekt, sondern eine Zeichenfolge, die den Klassennamen mit Namespace darstellt:
$form = $this->createForm(ProductType::class, $product);
Wie ist der gleiche Weg wie mit Symfony 3.x?
Fahren Sie benutzerdefinierte Felder über den Optionen-Parameter. Und ja, die Migration von Forms 2 zu Form 3 kann sehr schmerzhaft sein. Sie werden wahrscheinlich auch auf mehr Probleme stoßen. – Cerad