【问题标题】:No output in twig with custom Form Class自定义表单类在树枝中没有输出
【发布时间】:2016-08-18 22:50:07
【问题描述】:

我制作了一个非常小的测试公式来自学 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>

这就是 Twig 转储输出:

    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
  }
 ]

感谢您的帮助 米夏

【问题讨论】:

    标签: forms symfony twig


    【解决方案1】:

    您尝试对表单使用的方法buildTheForm 的名称不正确!

    尝试使用正确的buildForm

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

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

    【讨论】:

    • 非常感谢您的帮助。我不明白你从哪里知道,方法的名称应该是“buildForm”而不是“whatEverName”?
    • @freemindghost,哦,它实际上很容易找到。见PfsFormType extends AbstractType。这意味着你的类PfsFormType 覆盖了AbstractType 中的方法。如果你打开它,你会看到它有function buildForm(),它没有body..意味着你必须自己在你的类中实现它的body。祝你好运;)
    • 我通常使用接口,所以我收到一条消息以使用我定义的方法。非常感谢您的帮助
    猜你喜欢
    • 2014-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-20
    • 1970-01-01
    • 1970-01-01
    • 2019-03-01
    • 1970-01-01
    相关资源
    最近更新 更多