2012-09-12 2 views
1

먼저 SilverStripe 버전 2.4.7을 사용하고 있습니다. DataObjectManager와 함께 사용하고있는 DataObject와 다른 DataObject간에 has_one 관계가 있습니다. DataObjectManager의 요약 필드에 DataObject의 이름을 표시하려고하지만 아래 오류가 계속 발생합니다.DataObjectManager 요약 필드에 데이터 개체 이름 표시

캐치되지 않는 예외 : 개체 -> __()를 호출 : 방법 'fortemplate은'내가이 has_one 관계를 가지고 있기 때문에 그것이 생각하지만 난 모르겠어요 '스토어'

에 존재하지 않습니다. 아무도 내가 이것을 할 수있는 방법에 대한 제안이 있습니까?

감사

답변

8

당신은 그 오류를 얻고있다 요약 필드에 저장소 개체를 반환 "저장"하기 때문이다. 요약 필드는 객체에 대한 처리 방법을 알지 못하므로 "forTemplate"메소드가 있는지 확인합니다.이 메소드는 일반적으로 템플릿 또는 일반 문자열로 렌더링 된 객체를 반환합니다.

1) 제목 (또는 저장소의 어떤 필드 당신이 원하는)를 반환하면 저장소 개체,에 forTemplate() 메소드를 만들 :

는 다음 두 가지 옵션이 있습니다.

또는 그것에 DataObjectManager 필드가 개체에

2

)는 스토어의 제목을 반환하는 getter 메소드를 만듭니다. 즉 ..
public function getStoreTitle(){ 
    return $this->Store()->Title 
} 

그리고는 ... 즉 summary_fields에 그 방법에

public static $summary_fields = array(
    'StoreTitle' 
); 
+0

훌륭한 조언을 참조하십시오. 그것은 내 문제를 완전히 해결했다. 정말 고마워. :) – MillyMonster