2016-08-18 7 views
1

私はSynfomyでカスタムフォームクラスを自分自身に教えるために非常に小さなテスト形式を作成しました。私は出力を持っていないと私は間違いを見つけることはありません。私は誰かが私を助けることができるといいですカスタムフォームクラスを使用した小枝の出力がありません

クラスからマイ:

<?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' 
    )); 
    } 
} 

私のエンティティ:フォームを呼び出す必要があります

<?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; 
} 

} 

コントローラー:

<?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(), 
     ) 
     ); 
    } 
} 

そして小枝テンプレート:

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> 
小枝ザッツ

出力をダンプ:あなたはフォームbuildTheFormで使用しようとしている

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を ミカ

答えて

2

方法は右の名前ではありません!

正しいものであるbuildFormを使用してみてください:

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

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

+0

はあなたの助けのためにそんなにありがとう。メソッドの名前は "whatEverName"ではなく "buildForm"でなければなりません。 – freemindghost

+0

@freemindghost、ああ、実際にはかなり簡単に見つけることができます。 'PfsFormType extends AbstractType'を参照してください。これはあなたのクラス 'PfsFormType'が' AbstractType'のメソッドをオーバーライドすることを意味します。もしあなたがそれを開くと、 'function buildForm()'に本体がないことがわかります。クラス内で本体を実装する必要があります。幸運;) – pavlovich

+0

私は通常インターフェイスで動作するので、私はdefine.thxメソッドを使用するためのメッセージを手に入れます – freemindghost

関連する問題