Symfony-嵌入式格式赢得';t显示

Symfony-嵌入式格式赢得';t显示,symfony,doctrine,symfony-forms,formbuilder,Symfony,Doctrine,Symfony Forms,Formbuilder,我正在尝试创建一个表单来插入可以有一个或多个“答案”的“问题”。因此,我想为应答实体添加一个嵌入表单 它似乎起作用了,因为我看到了问题表单,但表单底部只显示字符串“Answers”,而不是字段 以下是我的控制器操作: public function addQuestionAction(Category $category) { $question = new Question(); $form = $this->createForm(new QuestionType(),

我正在尝试创建一个表单来插入可以有一个或多个“答案”的“问题”。因此,我想为应答实体添加一个嵌入表单

它似乎起作用了,因为我看到了问题表单,但表单底部只显示字符串“Answers”,而不是字段

以下是我的控制器操作:

public function addQuestionAction(Category $category)
{
    $question = new Question(); 
    $form = $this->createForm(new QuestionType(), $question);

    $request = $this->get('request');
    if ($request->getMethod() === 'POST') {
        $form->bind($request);

        $question->setCategory($category);
        if ($form->isValid()) {
            $em = $this->getDoctrine()->getManager();          
            $em->persist($question);
            $em->flush();

        return $this->redirect($this->generateUrl('mycategory_questiondisplay',
            array('id' => $question->getId())));
        }
    }
    return $this->render('MyCategoryBundle:Question:add.html.twig',
        array(
            'form' => $form->createView(),
        )); 
}
我的问题类型表格:

<?php

namespace My\CategoryBundle\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;

class QuestionType extends AbstractType
{

     /**
     * @param FormBuilderInterface $builder
     * @param array $options
     */
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('title')
            ->add('description')
            ->add('answers', 'collection', array(
                   'type' => new AnswerType(),
                   'allow_add' => true)
            );

    }

    /**
     * @param OptionsResolverInterface $resolver
     */
    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'Iel\CategoryBundle\Entity\Question'
        ));
    }

    /**
     * @return string
     */
    public function getName()
    {
        return 'my_categorybundle_question';
    }
}

问题是你的问题还没有答案。因此没有形式。试一试

$question = new Question();
$question->addAnswer(new Answer());
这将显示一个空的答案表单


查看食谱,了解如何使用javascript在浏览器中动态添加答案。

噢,这可能是重点。如果我添加它,它将返回一个错误“FatalErrorException:error:Class'My\CategoryBundle\Controller\Answer'未在/My/CategoryBundle/Controller/CategortController.php第275行中找到”。我没有任何应答控制器…我放错地方了。现在它像以前一样返回表单,只有字符串“Answer”。那么可能您的模板没有显示form.answers?否则,请完成烹饪书中的示例。
<?php

namespace My\CategoryBundle\Entity;
use Doctrine\ORM\Mapping as ORM;

/**
 * Answer
 *
 * @ORM\Table()
 * @ORM\Entity(repositoryClass="My\CategoryBundle\Entity\AnswerRepository")
 */
class Answer
{

    /**
    * @ORM\ManyToOne(targetEntity="My\CategoryBundle\Entity\Question",
inversedBy="answer")
    * @ORM\JoinColumns({
    *  @ORM\JoinColumn(name="question_id", referencedColumnName="id")
    * })
    */
    private $question;
    /**
    * Set question
    *
    @param My\CategoryBundle\Entity\Question $question
    */
    public function setQuestion(\My\CategoryBundle\Entity\Question $question)
    {
        $this->question = $question;
    }
    /**
    * Get question
    *
    @return My\CategoryBundle\Entity\Question
    */
    public function getQuestion()
    {
        return $this->question;
    }

    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="answer", type="text", nullable=true)
     */
    private $answer;

    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }

    /**
     * Set answer
     *
     * @param string $answer
     * @return Answer
     */
    public function setAnswer($answer)
    {
        $this->answer = $answer;

        return $this;
    }

    /**
     * Get answer
     *
     * @return string 
     */
    public function getAnswer()
    {
        return $this->answer;
    }
}
$question = new Question();
$question->addAnswer(new Answer());