1

Symfony 1.4와 Doctrine 1.2 및 sfDoctrineGuardPlugin을 사용하고 있습니다. 기사 작성 페이지가 있습니다. 내 기사 테이블에서 나는 어떤 사용자 (작성자)가 쓴 그것을 저장하는 profile_id 필드가 있습니다.sfDoctrineGuardPlugin 사용. 사용자 선택없이 id 필드를 설정하고 싶습니다.

내 문제는 사용자가 기사를 작성하고 저장을 클릭하면 사용자로부터 profile_id를 가져올 수 있다고해도 내 프로필 ID를 자동으로 설정할 수 없다는 것입니다.

내 articleForm 클래스에서 선택 상자의 기본값을 설정할 수 있지만 사용자가 변경할 수 있습니다. 읽기 전용으로 만들려고하면 db에 profile_id를 저장할 수 없습니다. 여기

내 구성 articleForm 클래스의 함수입니다 :

$this->offsetUnset("profile_id");

을하지만 난 전에 말했듯이,이 방법으로, PROFILE_ID :

// getting user_id $user = sfContext::getInstance()->getUser(); $user_id = $user->getGuardUser()->getId();

// converting for profile table 
$converter = Doctrine_Query::create() 
      ->select('*') 
      ->from('profile') 
      ->where('sf_guard_user_id = ?', $user_id); 

// fetching 
$result = $converter->fetchArray(); 

$this->widgetSchema->setDefault('profile_id', $result[0]['id']); 

가 읽기 전용으로 만들려면, 내가 사용 DB에 저장할 수 없습니다. 코드의 두 번째 부분이 없으면 현재 ID가 기본값이지만 사용자가 변경할 수 있습니다.

어떻게 해결할 수 있습니까? 어떤 생각? 고마워요 ...

+2

폼에'sfContext :: getInstance()'를 사용하는 대신 생성자에 사용자 객체 또는 user_id 값을 삽입해야합니다. 또한 도움이 될 것입니다. http://stackoverflow.com/questions/4742099/symfony-admin-generator-add-user-id-before-saving/4744077#4744077 – Maerlyn

+0

그래, 그게 내가 찾고있는거야. 덕분에 많이 Maerlyn –

답변

0

기본값을 저장하려면 저장할 수 있도록 양식에 게시 할 필요가 없습니다. 기본값을 저장하려는 경우 잘못된 트랙 친구가됩니다. 대신 응용 프로그램에서 논리를 가져야합니다. 개체를 저장하기 전에 기본값으로 설정할 값을 설정하십시오. preInsert 메서드를 사용하여 Peer 클래스를 평화롭게 사용할 수 있습니다.

+0

Maerrlyn이 귀하의 의견을 전하기 위해 보내준 링크가 내 문제를 해결했습니다. 고마워요 celalo –