2015-01-09 1 views
0

여러 버전의 폼이 있습니다. 양식에는 동일한 질문이 있지만 양식의 레이블은 작성자에 따라 다릅니다 (1 일 및 3 일).Symfony2는 URL을 기반으로 양식 라벨을 변경합니다.

누구든지이 작업을 수행하는 방법에 대한 아이디어가 있습니까? 그러나 나는 다른 템플릿 세트를 만들 수 있다는 것을 알고 있습니다. 그러나 폼이 다소 크고 비행 중에 그것을 변경하는 것이 좋을 것입니다.

나는 Symfony의 공구 가방이 크고 무언가를 간과 할까 두렵다. 현재로서는 내가 볼 수있는 유일한 방법은 Event Listener입니다.

도움을 주시면 감사하겠습니다.

+0

Symfony 양식 자습서를 살펴보십시오. http://symfony.com/doc/current/book/forms.html –

+0

아마도 내가 충분히 설명하지 못했을 것입니다. 요점은 양식의 모든 필드에 대해 여러 개의 레이블을 갖는 것입니다. 레이블은 간단하지만 다른 관점을 기반으로 레이블을 변경하는 것은 약간 다릅니다. –

+0

원근법이란 무엇입니까? 당신이 찾고있는 것에 대한 유스 케이스를주세요. –

답변

1

프레젠테이션 계층에 대해 이야기하는 것 같습니다. 나는 이것을 위해 번역을 사용하여 조사 할 것이다. 컨트롤러에 여러 폼 클래스 또는 여러 로직을 갖는 것은 실망 스러울 것입니다. 당신은 1 인칭과 3 인칭을 언급했습니다. 사용자가 해당 그룹에 속하는지 여부는 어떻게 결정합니까? 아마도 요구 사항을 확인하고 이에 따라 위임하는 변환 구성 요소에 대한 래퍼 서비스를 만들 수 있습니다. 네가하는 일이 다른 언어로 말하는 것 같아.

귀하의 주요 문제는 누구와 첫사람이 누구이며 누가 제 3 자인지를 결정하는 것입니다. 세션 전반에 걸쳐 변화가 있습니까? 그렇지 않으면 보안 프로세스에서이를 수행하십시오 (보안 유권자가 결정을 내릴 수 있음). 또는 변경된 경우 세션에 저장합니다. 래퍼를 사용하여 사용할 번역을 결정할 번역 서비스를 재정의하십시오.

결코 쉬운 말은 아니지만 번역 구성 요소, 디렉터 및 서비스 컨테이너로 인증을 사용하면 코드 기반을 혼란스럽게하지 않고 원하는 것을 얻을 수 있다고 생각합니다.

+0

이것은 정말 멋진 아이디어입니다! 알아 내면 내 결과를 게시 하겠지만 나는이 방향으로 나아갈 것이라고 확신합니다. 정말 단호한 제안! –

+0

엔티티 나 폼 유형에 번역을 직접 매핑하여 변수의 이름 지정 규칙에 따라 변환을 '레이블'로 사용하는 방법이 있는지 알고 계십니까? 지금 당장이 작업을 완료하는 유일한 방법은 번역 내에서 태그를 명시 적으로 요청하는 것입니다. –

+0

이 일은 결코 멋지지 않습니다. 레이블에 태그 이름을 넣으면 작동합니다! 나는 그 때 쉽게 사랑한다! –

0

당신은 두 가지 옵션이 있습니다 :

  1. 사용 Symfony Forms 2 개 형태의 클래스를 만들려면, 그리고 컨트롤러에, 당신은 당신의 템플릿이 렌더링 나뭇 가지 변수에 적절한 형태로 클래스를 설정

``의`

{{ form_start(form) }} 
    {{ form_errors(form) }} 
    {{ form_row(form.field1) }} 
    {{ form_row(form.field2) }} 
{{ form_end(form) }} 

```

이 방법을 사용하면 누가 그것을보고 있는지에 따라 표시되는 양식을 정의 할 수 있습니다. 그런 다음 Controller 액션이 호출되기 전에 서비스 설정에서 컨트롤러에서 호출하여이 클래스를 설정하는 메소드를 정의 할 수 있습니다.

+0

이것은 무거운 방법입니다. 이벤트 리스너를 사용하여 같은 것을 달성하거나 옵션 해석자를 수행 할 수 있습니다. 이 이상한 시나리오를 처리 할 줄 몰랐던 Symfony만의 도구가 있는지 살펴보고자했습니다.나는 내가 번역으로 무언가를 발견했을지도 모른다라고 생각한다. 내가 알아 내면 게시 할 것입니다. 어쨌든 고맙습니다. –

+0

아마도 작업을 수행하기 위해 양식 테마를 사용하는 것에 대한 귀하의 생각은 어떻습니까? –

관련 문제