2016-08-18 51 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> 

那树枝转储输出:

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

方法,您正试图与形式buildTheForm使用不正确的名称!

尝试使用buildForm这是正确的:

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

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

+0

感谢ü这么多的帮助。我不明白你从哪里知道,方法的名称应该是“buildForm”而不是“whatEverName”? – freemindghost

+0

@freemindghost,哦,其实很容易找到。看到'PfsFormType extends AbstractType'。那么这意味着你的类'PfsFormType'重写'AbstractType'中的方法。如果你打开它,你可以看到它具有'函数buildForm()',它没有body。意味着你必须在你的类中实现它的主体。祝你好运;) – pavlovich

+0

我通常与接口工作,所以我得到一个消息,使用我define.thx的方法,你这么多的帮助 – freemindghost