2012-04-19 32 views
0

빠른 질문입니다. Doctrine ORM과 sfGuardDoctrinePlugin에 symfony1.4를 사용하고 있습니다. 나는 '작업'이라는 심포니 형식을 가지고 있습니다. 현재 로그인 된 사용자에게 기본적으로 userId 필드 (사용자 테이블 인 경우 FK를 Id로 설정)를 설정합니다. 이것을 어떻게 할 수 있습니까?userId를 현재 사용자 기본값으로 설정합니다.

//apps/myapp/modules/task/actions 

class taskActions extends sfActions 
{ 
    public function executeNew(sfWebRequest $request) 
    { 
    $this->form = new taskForm(); 
    } 

    public function executeCreate(sfWebRequest $request) 
    { 
    $this->forward404Unless($request->isMethod(sfRequest::POST)); 

    $this->form = new taskForm(); 

    $this->processForm($request, $this->form); 

    $this->setTemplate('new'); 
    } 
} 

답변

0

당신이 행동을 통해 양식을 설정하거나 $form->configure()을 통해,하지만 당신은이를 사용하여 현재 사용자 ID에 액세스 할 수 있습니다 방법을 보지 않고 대답하기 까다로운의 종류 :

$currentUserId = sfContext::getInstance()->getUser()->getGuardUser()->getId(); 

- 업데이트 -

업데이트를 기반으로 taskForm은 모델 개체를 기반으로하지 않는 것으로 나타나고, 그렇지 않으면 생성자를 통해 개체를 전달하므로 사용자 지정 양식이어야합니다. 이 고양이를 피부하는 몇 가지 방법이 있습니다, 당신은 생성자를 통해 사용자 개체를 전달할 수 있습니다 또는 당신은 공공 접근을 통해 값을 설정할 수 있습니다, 다음과 같이 :

class taskForm 
{ 
    protected $user; 

    public function setUser($user) 
    { 
     $this->user = $user; 
    } 

    public function getUser() 
    { 
     return $this->user; 
    } 

    public function configure() 
    { 
     // This should output the current user id which demonstrates that you now 
     // have access to user attributes in your form class 
     var_dump($this->getUser()->getGuardUser()->getId()); 
    } 
} 

그리고 그것을 설정 :

당신이 할 수있는 또 다른 방법은 생성자를 통해 사용자 객체를 직접 전달하는 것입니다. 그러면 양식 내에있는 동안 $this->getObject()->getUser()을 사용하여 사용자 객체를 참조 할 수 있습니다. 사용자 안의 taskForm을 강제 실행하므로 권장하지 않지만 문맥.

+0

오른쪽 질문을 시작하지 않아서 죄송합니다. 다음은 액션을 통해 폼을 초기화하는 코드입니다. 내가 정말로 원하는 것은 현재 사용자를 양식에 전달하는 것입니다. –

+0

걱정할 필요가 없습니다. 자신이하는 방식으로 게시물을 업데이트했습니다. –

관련 문제