2016-08-18 3 views
1

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

Antwort

2

Methode, die Sie mit Formularen buildTheForm versuchen, zu verwenden ist nicht der richtige Name!

Try buildForm verwendet, die die richtige ist:

class PfsFormType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     $builder 
      ->add('name') 
     ; 
    } 
} 

http://symfony.com/doc/current/forms.html

+0

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

+0

@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

+0

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

Verwandte Themen