silverstripe에서 게시 명령을 가로 챌 수있는 함수를 작성하는 방법을 누구에게 말해 줄 수 있습니까? 페이지 변경이 발생할 때마다 다른 시스템에 대한 HTTP 호출이 전송되는 시스템을 구현하여 관리자에게 페이지가 변경되었음을 알립니다. 시스템이 승인되지 않은 경우 변경 사항을 제거 할 수있는 시간을 관리자에게 제공하기 위해 몇 분 정도 기다려야합니다.Silverstripe function intercept
0
A
답변
1
이 목적으로 사용할 수있는 SiteTree
클래스에는 다양한 이벤트 후크가 있습니다.
class MySiteTreeExtension extends DataExtension {
function onAfterPublish() {
$this->notifyMyAdmin(sprintf('Page "%s" has been published', $this->owner->Title));
}
}
은
mysite/_config.php
에 다음 추가하여 확장 적용 :
Object::add_extension('SiteTree', 'MySiteTreeExtension');
당신은 분명히 그 HTTP 호출을 할 수있는 notifyMyAdmin()
메소드를 구현해야합니다. 일반적으로 사용자 동작에 대해 동기 HTTP 호출을 수행하지 말 것을 권합니다. 시스템이 다른 시스템의 가용성에 종속되어 있기 때문입니다. 대신 messagequeue 모듈을 사용하는 것이 좋습니다. "출판과 함께 몇 분간 기다려야한다"는 측면에서 : 확장 시스템을 통해 출판물을 거부하는 것은 불가능합니다. 이 목적을 위해 서브 클래스에서 SiteTree->doPublish()
을 덮어 쓸 수 있지만 여전히 사용자에게는 이상한 UI 패턴이됩니다. 워크 플로우 모듈과 "Request Publication"플러스 일부 cron 작업을 자동 승인하는 것이 더 간단합니다.
+0
잉고, 머리를 주셔서 감사합니다. 나는 당신이 제안하고있는 "Request Publication"을 어떻게하는지 확신 할 수 없다. onAfterPublish는 유용합니다. 감사합니다. –
나는이 같은 것을 찾고 있다고 생각하니? http://www.silverstripe.org/cms-workflow-module/ –