Итак, у меня есть форма, содержащая вопросы типа свободных полей (текст), множественный выбор (флажок), один выбор (радио).
Я проверяю значения кнопки и сохраняю их в базе данных для каждого пользователя, но я хочу изменить это значение следующим образом:
data-point "2" = 10 points,
data-point "3" = 7 points,
data-point "4" = 4 points,
data-point "5" = 2 points,
а затем с этими значениями я должен сделать расчет и определить профиль в соответствии с результатом.. как мне это сделать? SQL-запрос? в петле? небольшая помощь будет приветствоваться .. здесь моя веточка, чтобы зациклиться на подвопросе.
<div class = " col-6 d-flex">
<div class = "label-div1">
<label for = "subscale{{subQuestion.id}}for{{i}}>
<img src = "{{asset('images/survey/humeur/'~ i ~'.jpg')}}">
</label>
<input type = "radio" class = "radio-pict" name = "{{subQuestion.id}}" id = "subscale{{i}}" data-point = "{{i}}"value = "{{i}}">
</div>
здесь мой контроллер для сохранения ответов
public function saveAnswer(Request $request)
{
/* Repository */
$questionRepo = $this->getDoctrine()->getRepository(Question::class);
$answerRepo = $this->getDoctrine()->getRepository(Answer::class);
$choiceRepo = $this->getDoctrine()->getRepository(Choice::class);
$userSlpRepo = $this->getDoctrine()->getRepository(UserSlp::class);
/* Entity Manager */
$em = $this->getDoctrine()->getManager();
$datas = $request->request->all();
$userSlp = $userSlpRepo->findOneByGaeaUserId($this->getUser()->getId());
foreach ($datas as $data => $value) {
$questionId = explode("_", $data);
$question = $questionRepo->findOneById($questionId[0]);
switch ($question) {
case 'Sub_question_free':
$answer = new Answer_free;
$answer->setFreeAswere($value);
break;
case 'Sub_question_scale':
$answer = new Answer_scale;
$answer->setScale($value);
break;
$answer->setQuestion($question);
$answer->setUserSlp($userSlp);
$em->persist($answer);
$em->flush();
}
exit;
}
}
и вот моя веточка для отображения результатов администратору..
{% if answer.question == "Sub_question_choice" or
answer.question == "Sub_question_scale" or
answer.question == "Sub_question_free" %}
{% if answer == "choice" %}
{% for choice in answer.choices %}
<p>{{choice.name}}</p>
{% endfor %}
{% elseif answer == "free" %}
<p>{{answer.freeAswere}}</p>
{% elseif answer == "scale" %}
<p> {{answer.scale}}</p>
{% endif %}






Итак, во-первых, в Symfony контроллер всегда должен возвращать ответ. Даже если это просто перенаправление или JsonResponse. Поэтому вы не должны использовать выход в своем контроллере.
Вам следует использовать форму Symfony, но если вы новичок в Symfony, я могу понять, что это непросто.
Здесь, чтобы помочь вам, у вас есть много вариантов:
Service :
public function conversion(){
//Some conditions
}
controller:
public function saveAnswer(Request $request, YourService $service)
И использовать его внутри как функцию.
public function yourSetter(...){
//do some conditions and after set your variables depending on result
}
Надеюсь, это поможет вам, не стесняйтесь спрашивать, если хотите!
он отлично работает, я сделал это с помощью сеттера, спасибо!! ....... так как я могу добавить значения и отобразить профиль в соответствии с количеством точек ... которые я бы привязал к пользователю ... .? небольшой пример, который поможет мне, пожалуйста
любой? пожалуйста..