在Symfony中使用标签形式

时间:2016-09-12 12:59:20

标签: forms symfony label

我想制作一个包含27个问题的表格,并为每个问题提供相同的答案字段:

Question.yml

 #question for the question Form, this are the question u have to answer
Questions:
 - 'Question 1: Ich habe ziemlich regelmässig Tagträume und Fantasien über Dinge, die mir passieren Könnten'
 - 'Question 2: Ich empfinde warmherzige Gefühle für Leute, denen es weniger gut geht als mir'
 - 'Question 3: Manchmal fällt es mit schwer, die Dinge vom Standpunkt der anderen zu betrachten'
 - 'Question 4: Hin und wieder tun mir Menschne sehr leid, wenn sie Probleme haben'
 - 'Question 5: Die Gefühle eriner Person in einem Roman kann ich mir oft sehr gut vorstellen'
 - 'Question 6: In Notfallsituationen fühle ich mich ängstlich und unbehaglich'
 - 'Question 7: Ich bleibe gewöhnlich objektiv, wenn ich einen Film oder ein Theaterstück sehe, und lasse mich meistens nicht vollkommen von ihm gefangen nehmen'
 - 'Question 8: Ich versuche, bei einem Streit zuerst beide Seite zu verstehen, bevor ich eine Entscheidung treffe'
 - 'Question 9: Wenn ich sehe, wie jemand ausgenutzt wird, glaube ich,ihn schützen zu müssen'
 - 'Question 10: Ich fühle mich hilflos, wenn ich inmiten einer sehr emotionsgeladenen Situation bin'
 - 'Question 11: Machmal versuche ich meine Freunde besser zu verstehen, indem ich mir vorstelle, wie die Dinge aus ihrer Perspektive aussehen'
 - 'Question 12: Ich bin nur selten von einem guten Buch oder Film sehr gefesselt'
 - 'Question 13: Wenn ich sehe, wie jemand verletzt wird, bleibe ich in der Regel ruhig'
 - 'Question 14: Gewöhnlich geht mir das Unglück anderer Menschen nicht sehr nahe'
 - 'Question 15: Wenn ich sicher, bin Recht zu haben, verschwende ich meine Zeit nicht damit, mir Argumente andere Leute anzuhören'
 - 'Question 16: Nachdem ich einen Film gesehen habe, fühle ich mich so, als ob ich eine Person aus dem Film sei'
 - 'Question 17: In einer gespannten emotionalen Situation zu sein, beängstigt mich'
 - 'Question 18: Wenn ich sehe, dass jemand ungerecht behandelt wird, habe ich manchmal nicht viel mitleid mit ihm'
 - 'Question 19: Gewöhnlich verhalte ich mich ziemlich umsichtig in Notsituationen'
 - 'Question 20: Mich berühren Dinge sehr, die ich nur beobachte'
 - 'Question 21: Ich glaube, jedes Problem hat zwei Seiten, und versuche deshalb, beide zu berücksichtigen'
 - 'Question 22:  Ich würde mich selbst als eine ziemlich weichherzige Person bezeichnen'
 - 'Question 23: Wenn ich einen guten Film sehe, kann ich mich sehr leicht in die Hauptperson hineinversetzen'
 - 'Question 24: In heiklnen Situationen neige ich dazu, die Kontrole über mich zu verlieren'
 - 'Question 25: Wenn mir das Verhalten eines anderen komisch vorkommt, versuche ich mich für einen Weile in seine Lage zu versetzten'
 - 'Question 26: Wenn ich eine interessante Geschichte oder ein gutes Buch lese, versuche ich mir vorzustellen, wie ich mich fühlen würde, wenn mir die Ereignisse passieren würden'
 - 'Question 27: Wenn ich sehe, dass jemand in einem Notfall dringend Hilfe braucht, macht mich das völlig fertig'
 - 'Question 28: Bevor ich jemanden kritisiere, versuche ich mir vorzustellen, wie ich mich an seiner Stelle FÜhlen würde'

要调用问题的班级:

<?php

namespace AppBundle\Controller;
use Symfony\Component\Config\Definition\Exception\Exception;
use Symfony\Component\Yaml\Yaml;

class Questions
{
    public function giveMeTheQuestions()
    {
        $questions = Yaml::parse(file_get_contents('../web/bundles/framework/yml/questions.yml'));
        return $questions;
    }
}

实体:

<?php
namespace AppBundle\Entity;

class Answer
{
    private $name;

    /**
     * @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\Answer;
use AppBundle\Entity\PsychoTest;
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use AppBundle\Form\Type\PfsType;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

class IndexController extends Controller
{
    private $questionsArray;

    public function startAction(Request $request)
    {
        $pfsForm = new PsychoTest();
        $questions = new Questions();
        $this->questionsArray = $questions->giveMeTheQuestions();
        $this->questionsArray = $this->questionsArray['Questions'];

        for($i=0;$i<sizeof($this->questionsArray);$i++){
            $answer = new Answer();
            $answer->setName('bla');
            $pfsForm->getAnswers()->add($answer);
        }

        $form = $this->createForm(PfsType::class, $pfsForm);

        return $this->render(
            'index.html.twig',
            array(
                'questions' => $this->questionsArray,
                'form' => $form->createView()
            )
        );
    }
}

我的模板:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  </head>
<body>
{{ form_start(form) }}
{# render the task's only field: description #}
{{ form_row(form.description) }}
<h3>Questions</h3>
<ul class="tags">
  {# iterate over each existing tag and render its only field: name #}
  {% for answers in form.answers %}

    {{ form_label(answers.name, 'Your name') }}
    <li>{{ form_row(answers.name) }}</li>
  {% endfor %}
</ul>
<input type="submit" formaction="http://localhost/pfs/web/app_dev.php/index">
{{ form_end(form) }}

我想使用问题作为字段的标签,但我不知道如何解决问题。愿有人帮帮我吗? THX

米莎

1 个答案:

答案 0 :(得分:1)

快速解决方案是使用loop.index0此循环变量来访问问题:

...

{% for answers in form.answers %}
   {{ form_label(answers.name, questions['Questions'][loop.index0]) }}
   <li>{{ form_row(answers.name) }}</li>
{% endfor %}

...

但是,建议您在表单构建PfsType上设置这些标签,以便更好地重复使用。