Ich machte einen sehr kleinen testformular mich in Synfomy mit benutzerdefinierten Formularklassen zu unterrichten. Ich habe keine Ausgabe und ich finde den Fehler nicht. Ich hoffe, dass mir jemand helfen kann.Keine Ausgabe in Zweig mit benutzerdefinierter Formularklasse
Meine Von Klasse:
<?php
namespace AppBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\TextType;
class PfsFormType extends AbstractType
{
public function buildTheForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name')
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\PfsForm'
));
}
}
meine Einheit:
<?php
namespace AppBundle\Entity;
class PfsForm
{
private $name;
private $frage;
/**
* @return mixed
*/
public function getFrage()
{
return $this->frage;
}
/**
* @param mixed $frage
*/
public function setFrage($frage)
{
$this->frage = $frage;
}
/**
* @return mixed
*/
public function getName()
{
return $this->name;
}
/**
* @param mixed $name
*/
public function setName($name)
{
$this->name = $name;
}
}
Der Regler, der die Form nennen sollte:
<?php
namespace AppBundle\Controller;
use AppBundle\Entity\PfsForm;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use AppBundle\Form\PfsFormType;
class IndexController extends Controller
{
public function startAction()
{
$pfsForm = new PfsForm();
$form = $this->createForm(PfsFormType::class,$pfsForm);
return $this->render(
'index.html.twig',array(
'form' => $form->createView(),
)
);
}
}
Und die Zweig-Vorlage:
enter code here
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{{ dump() }}
{{ form_start(form) }}
{{ form_widget(form) }}
{{ form_end(form) }}
</body>
</html>
Ausgabe
Thats, Dump der Zweig:
array:2 [▼
"form" => FormView {#408 ▼
+vars: array:24 [▼
"value" => PfsForm {#361 ▶}
"attr" => []
"form" => FormView {#408}
"id" => "pfs_form"
"name" => "pfs_form"
"full_name" => "pfs_form"
"disabled" => false
"label" => null
"label_format" => null
"multipart" => false
"block_prefixes" => array:3 [▶]
"unique_block_prefix" => "_pfs_form"
"translation_domain" => null
"cache_key" => "_pfs_form_pfs_form"
"errors" => FormErrorIterator {#419 ▶}
"valid" => true
"data" => PfsForm {#361 ▶}
"required" => true
"size" => null
"label_attr" => []
"compound" => true
"method" => "POST"
"action" => ""
"submitted" => false
]
+parent: null
+children: array:1 [▼
"_token" => FormView {#424 ▶}
]
-rendered: false
}
"app" => AppVariable {#435 ▼
-tokenStorage: TokenStorage {#239 ▶}
-requestStack: RequestStack {#200 ▶}
-environment: "dev"
-debug: true
}
]
Thx für Ihre Hilfe Micha
Thank u für Ihre Hilfe so viel. Ich verstehe nicht, woher Sie wissen, dass der Name der Methode "BuildForm" und nicht "WhateverName" sein sollte? – freemindghost
@freemindghost, oh es ist eigentlich ziemlich einfach herauszufinden. Sehen Sie, dass 'PfsFormType den AbstractType erweitert. Nun, das bedeutet, dass Ihre Klasse 'PfsFormType' Methoden aus' AbstractType' überschreibt. Wenn Sie es öffnen, können Sie sehen, dass es 'function buildForm()' hat, das keinen Körper hat, was bedeutet, dass Sie seinen Körper in Ihrer Klasse selbst implementieren müssen. Viel Glück;) – pavlovich
Ich arbeite normalerweise mit Schnittstellen, so bekomme ich eine Nachricht, um die Methoden zu verwenden, die ich definiere.thx Sie so sehr für Ihre Hilfe – freemindghost