2012-11-06 4 views
6

Symfony2에서 폼 빌더를 사용하는 데 문제가 있습니다. 정확히 말하면, html 배열 인 입력 필드가 필요하지만 createFormBuilder-> add를 사용하여 만들 수는 없습니다. 그래서폼 빌더 symfony2로 배열 입력 필드 생성

$attributesForm = $this->createFormBuilder() 
     ->add('attribute[0]', 'text') ... 

그리고, 그러나 나는 다음과 같은 예외 얻을 : 가 여기에 내가 뭘하려

이름 "속성 [0]"잘못된 문자가 포함되어 있습니다. 이름은 문자, 숫자 또는 밑줄로 시작해야하며 문자, 숫자, 숫자, 밑줄 ("_"), 하이픈> ("-") 및 콜론 (":") 만 포함해야합니다.

멋진 해결책이 있습니까? 아니면 수동으로 필드를 만들어야합니까?

미리 감사드립니다.

편집 : 더이 문제를 명확히하기 위해 ... 내가 이런 일이 발생하려면 :

<div id="msoft_adminbundle_offertype"> 
<div>Name <input type="text" name="name"></div> 
<div>...</div> 
<div>Attribute 0 <input type="text" name="attribute[0]"></div> 
<div>Attribute 1 <input type="text" name="attribute[1]"></div> 
<div>Attribute 3 <input type="text" name="attribute[3]"></div> 
<ul> 
    </ul> 
<p> 
    <button type="submit">Edit</button> 
</p> 

도움말을?

답변

4

'collection'필드 유형을 사용하여 입력 필드의 배열을 만들 수 있습니다. 그것을 사용하는 방법에 대한

문서는 여기에서 찾을 수 있습니다 :

Collection documentation

이 충분히 명확하지 않습니다 또는 당신은 아직도 내가 기꺼이 그들과 함께 당신을 도울 것입니다 질문이있는 경우.

+0

감사합니다. 그것은 바르게 보인다, 나는 그것을 지금 시험해 볼 것이다! – markoub

+0

죄송합니다. 추가 메모 ... : - 더 간단한 것이 필요합니다. ... 나는 각 제안에 대해 설정할 수있는 매우 구체적인 속성 목록을 가지고 있으며 "속성 [0]"으로 나열하고 싶습니다. "속성 [1]"등이 있습니다. 사실, 다른 배열 인덱스를 사용해야하지만 그렇게 중요하지 않습니다. 요약하면, 이것은 더 복잡합니다. 사용자 옵션을 추가하여 양식 세트 안에서 새로운 양식을 만들 수 있습니다. 나는 단지 "attribute_1", "attribute_2"등의 속성 배열 대신에 속성 배열을 얻고 싶다. – markoub

+0

당신이 실제로 원하는 것을 나에게는 분명하지 않습니다. 양식의 샘플 코드 (html)를 제공하여 원하는대로 생성 할 수 있다면 귀하를 더 도울 수 있습니다. –

13

이전 답변 에서처럼 컬렉션 유형이나 중첩 된 양식을 사용하십시오. 각 필드는 배열의 한 항목에 해당합니다. 그리고 당신은/그렇게하고 싶지 않아 할 수없는 경우, 다음을 수행 할 수 있습니다

->add('attribute_0', 'text', array(
    'property_path' => 'attribute[0]', 
)) 
+0

감사합니다. 컬렉션을 사용하기 시작했습니다. – markoub

1

은 또한 당신은 나뭇 가지에 필드를 ovveride 수 있습니다. 예 :

{{ form_row(form[field_name],{ 'full_name': 'attribute[' ~ step ~ ']' })}} 

여기서 step은 색인입니다.