2
그래서이 양식을 Ajax와 함께 제출하고 싶습니다. 일반적으로 이것은 매우 쉽게 수행 할 수 있지만 현재는 포함 된 컬렉션을 올바른 방법으로 처리하지 못하므로 너무 나쁩니다.Symfony2.3에서 컬렉션을 사용하여 Ajax 양식을 처리하는 방법
답변 모음으로 질문을 만들 수있는 양식이 있습니다. 양식은 다음과 같이 생성됩니다
이제{{ form_start(form, {'attr':{'class': 'form-horizontal', 'id': 'form'}}) }}
<div class="form-group">
{{ form_label(form.question, null, { 'label_attr': {'class': 'col-lg-2 control-label'} }) }}
<div class="col-lg-5">
{{ form_widget(form.question, { 'attr': {'class': 'form-control'} }) }}
</div>
</div>
{% for answer in form.answers %}
<div class="form-group">
{{ form_label(answer.answer, 'Answer '~loop.index, { 'label_attr': {'class': 'col-lg-2 control-label'} }) }}
<div class="col-lg-5">
{{ form_widget(answer.answer, { 'attr': {'class': 'form-control'} }) }}
</div>
</div>
{% endfor %}
<div class="col-lg-8"><input class="btn btn-primary pull-right" type="submit" /></div>
{{ form_end(form) }}
양식을 제출, 나는 자리에이 작은 자바 스크립트를 가지고 :
$('#form').submit(function() {
$.ajax({
type: "POST",
url: "{{ url('questionCreateSubmit') }}",
data: $(this).serialize(),
success: function(data) {
alert(data);
}
});
return false;
});
지금 내 컨트롤러에서 나는 그것을 처리하는 경우 테스트하려면이 있습니다 그것은 바로 :이 반환 무엇
/**
* @Route("https://stackoverflow.com/questions/create/submit", name="questionCreateSubmit")
*/
public function questionCreateSubmitAction(Request $request)
{
$question = new Question();
$form = $this->createForm(new QuestionType(), $question);
$form->handleRequest($request);
die(var_dump($form->getData()));
그러나 그것은 단지 답변의 컬렉션을 질문 속성을 설정하고 무시입니다 :
,691,363 컬렉션이 자동으로 입력 또는 I가해야 할됩니다 방법이 있나요(
[question] => Array
(
[question] => dfsdf
[answers] => Array
(
[0] => Array
(
[answer] => sdfsdf
)
[1] => Array
(
[answer] => dsfds
)
[2] => Array
(
[answer] => fsdfsdf
)
)
[_token] => cf8781508d9002504455472d676acb1073888e67
)
)
:210
(
[id:Acme\DemoBundle\Entity\Question:private] =>
[question:Acme\DemoBundle\Entity\Question:private] => dfsdf
[answers:Acme\DemoBundle\Entity\Question:private] => Doctrine\Common\Collections\ArrayCollection Object
(
[_elements:Doctrine\Common\Collections\ArrayCollection:private] => Array
(
)
)
)
내가 그 덤핑하여 $ _POST 변수를 확인 , 그것은 분명이 같은 배열 구조를 보여줍니다 answers 배열을 반복하고 question 객체에 채워서 모든 것을 스스로 수행해야합니다.
도움을 많이 주시면 감사하겠습니다.
당신이 양식 유형 ('QuestionType')을 보여줄 수 :
하지만 내 경우에는 다음과 같이 봤는데해야합니다 문제는이처럼 보였다 내 QuestionType에 있었다? – cheesemacfly