形成symfony2,在Symfony2中显示我创建的表单

时间:2012-10-17 14:38:07

标签: symfony twig

我需要你的帮助,我想在Symfony2中显示我创建的表格。我想显示我创建的表单92次因为我的数据库中有92个数字(每个数字都是一个表单),我不知道怎么做这里是我的代码: 控制器:

class DefaultController extends Controller
{
 public function QuestionsAction(Request $request)
 {   
     $questions = $this->getDoctrine()->getEntityManager()
          ->getRepository('Tests\TestsPhpBundle\Entity\Question')     
          ->findAll();
    $task = new Question();
    $forms = $this->createForm(new QuestionType(), $task);   
    if ($request->getMethod() == 'POST') {
    $forms->bindRequest($request);             
        if ($forms->isValid()) 
         {
             $em = $this->getDoctrine()->getEntityManager();
             $em->persist($task);
             $em->flush();
             }                 
  }  
       {
 return $this->render('TestsTestsPhpBundle:Default:index.html.twig', array(
        'questions' => $questions,
        'forms' => $forms->createView()
                      ));      
       }

 }
 }

我的表单文件:

class QuestionType extends AbstractType
       {
        public function buildForm(FormBuilder $builder, array $options)
         {


         $builder
            ->add('categories',  null, array('required' => false,                                              
                                            ))                                         

            ->add('text', 'entity', array(
                         'class' => 'TestsTestsPhpBundle:Question',
                         'query_builder' => function($repository) { 
     return $repository->createQueryBuilder('p')->orderBy('p.id', 'ASC'); },
                         'property' => 'text'))
                ;
    }
     public function getDefaultOptions(array $options)
    {
        return array(
            'data_class' => 'Tests\TestsPhpBundle\Entity\Question',);
    }
    public function getName()
    {
        return 'question';
    }
    }

我的枝条文件:

{% block content %}

  <h2>Questions</h2>

   {% for question in questions %}

   <dl>
    <dt>Number</dt>
    <dd>{{ question.number }}<dd>

  {% for form in forms %}

   {{ form_row(forms.categories) }}   
     {{ form_row(forms.text) }}

    </dl>
      {% endfor %}
       <hr />
    {% endfor %}
   {% endblock  %}

1 个答案:

答案 0 :(得分:1)

我建议阅读capter:嵌入控制器 http://symfony.com/doc/2.0/book/templating.html

<div id="sidebar">
    {% render "AcmeArticleBundle:Article:recentArticles" with {'max': 3} %}
</div>

您可以在Twig Template中创建for循环,并在渲染表单的地方调用一个动作(如果需要,带参数)。 - &GT;在你的案例中的问题行动。