2011-06-14 4 views
2

필자는 Symfony와 Doctrine을 사용하여 내 CMSes 용 양식을 생성합니다. 최근에는 특정 URL 매개 변수를 기반으로 기본값을 설정하여 맞춤 설정했습니다.Symfony 양식에서 요청 객체를 얻는 가장 좋은 방법은 무엇입니까?

예를 들어 PollQuestionPollChoice의 두 모델이 있습니다. PollChoicepoll_question_id 필드를 사용하여 PollQuestion과 관련이 있습니다. PollChoice 양식에는 PollChoice을 첨부 할 수있는 모든 PollQuestion이 나열된 드롭 다운 목록이 있습니다. 또한 두 경로가 있습니다 : pollchoices/newpoll/:poll_id/choice/new. 두 경로 모두 PollChoiceForm을 표시하지만 두 번째 경로를 사용하면 :poll_id URL 매개 변수로 설정된 PollQuestion 드롭 다운이 자동으로 표시됩니다. 단순히 PollChoiceForm 클래스의 드롭 다운 위젯의 기본값을 요청 객체에서 :poll_id 값을 가져 와서 변경합니다. 나는 현재 sfContext::getInstance()->getRequest()를 사용하여 요청 객체를 가져

1) :

내 질문은 두 가지입니다. sfContext::getInstance()은 frowned하지만, 나는 그것을 가져올 다른 방법을 찾을 수 없었습니다. 다른 방법이 있습니까? 의존성 주입은 좋은 방법 인 것처럼 보이지만 해킹을 많이하지 않고이를 수행하는 방법을 알지 못합니다 (필자는이를 피하고 싶습니다).

2) URL 매개 변수를 기반으로 양식의 기본값을 변경하는 잘못된 방식에 대해 완전히 고민하고 있습니까?

답변

3

양식에 컨텍스트가 필요할 때마다 생성자 삽입을 통해이를 수행합니다. 작업에

: 형태

$this->form = new WhateverForm($whatever, array("context" => $this->getContext())); 

는 :

$this->getOption("context"); 
+0

나는이 방법을 좋아한다. 내 사용자 지정 관리자 테마의 동작을 편집하여 자동으로 생성자 내에 삽입한다고 생각합니다. –

관련 문제