2013-02-21 1 views
1

데이터 객체에 대한 모든 변경 사항을 감사 추적하려고합니다. 이벤트 데이터 객체가 있고 변경된 사람, 변경된 사람 등을 알고 싶습니다 (페이지와 유사). Silverstripe 사이트에서는 Verioned을 사용하도록 권장하고 있지만 구현 예를 찾을 수 없습니다. 가장 좋은 예는 Pages가 이미 Versioned로 구현되어 있다는 것입니다. 기본 규칙은 장식 자에 augmentDatabase() 메소드를 정의하는 것입니다. 그래서 dataObject (extension)에 DataExtention을 사용하고 Event Data 객체에 확장 데이터를 사용하고 싶습니다. 그러나 간단한 예가 있습니까? 당신이 관리하고 이벤트 데이터 객체의 여러 버전을 모니터링 할 가정새 릴리스 (3.2)의 데이터 객체에 대한 Silverstripe의 버전 관리 기능

답변

3

, 당신은 단순히 을 구축/당신이 그런 dev에 실행

Class Event extends DataObject{ 
    static $extensions = array(
    "Versioned('Stage', 'Live')" 
); 
    ... 
} 

thatDataObject

의 버전 확장을 사용할 것을 선언 할 필요가 이제해야 Event, Event_Live 및 Event_versions 테이블이 있어야합니다. 그런 다음 Versioned.php에서 사용할 수있는 메서드를 살펴보고 Event (예 : publish())와 함께 사용할 수 있습니다. 이렇게하면 시작할 수 있습니다.

+1

(이 타사 확장에서 오는 어쩌면 때문에) 그래서 난 당신이 이벤트 객체 자체를 변경할 수 없습니다 것을 이해 과 더 읽을 수있는 링크입니다. 나는 당신이 Event DataObject를 쓰고 있다고 생각했습니다. 이 경우 Object :: add_extension ('Event', 'Versioned ("Stage", "Live"))를 삽입하여 버전이있는 Event를 꾸밀 수 있습니다. mysite/_config.php에 있습니다. 이미 구현 된 augmentDatabase() 메소드를 통해 버전 관리 측면을 처리합니다. 더 많은 사용자 지정 논리를 추가해야하는 경우 자체 데코레이터를 만들고 동일한 메커니즘을 사용하여 추가 할 수 있습니다. 희망이 도움이 – jfbarrois

2

"SilverStripe의 버전 관리는 Versioned 클래스를 통해 처리되며 모든 DataObject 하위 클래스에 적용 할 수있는 DataExtension입니다."

"버전 기반의 상위에 생성하는 모든 하위 클래스는 필요에 따라 자동으로 조인되는 추가 테이블을 생성합니다." 여기

는 예 Versioning of Database Content