Symfony-嵌入式格式赢得';t显示
我正在尝试创建一个表单来插入可以有一个或多个“答案”的“问题”。因此,我想为应答实体添加一个嵌入表单 它似乎起作用了,因为我看到了问题表单,但表单底部只显示字符串“Answers”,而不是字段 以下是我的控制器操作: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(),
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());