Silverstripe write Page to Live, stage or Draft? How it works

半世苍凉 提交于 2019-12-11 10:02:10

问题


I have some difficulty to update a page by selecting is version... To Create, I do this :

$PageCalendrierEvenement = new PageCalendrierEvenement();

$PageCalendrierEvenement->Title = $this->request->postVar('Titre');
$PageCalendrierEvenement->MenuTitle = $this->request->postVar('Titre');
$PageCalendrierEvenement->URLSegment = Utils::remplacerEspaces(Utils::remplacerAccents($PageCalendrierEvenement->Titre));
$PageCalendrierEvenement->publish('Stage');
$PageCalendrierEvenement->doRestoreToStage();

That work's very well. But how can we update it values by ID? Is it possible witout using DB:Query?

$evens = Versioned::get_by_stage('PageCalendrierEvenement', 'Stage')->byID($evenID);
$evens->Title = $this->request->postVar(Titre);
$evens->Publish('Stage');

回答1:


For subclasses of SiteTree you can just do:

$evens = Versioned::get_by_stage('PageCalendrierEvenement', 'Stage')->byID($evenID);
$evens->Title = $this->request->postVar(Titre);

//do whatever you want...

$evens->doPublish(); //writes to Stage and Live and does other stuff for SiteTree

For simple DataObjects you need to call:

//changed a bit...
$evens->write();
$evens->publish("Stage", "Live");

See source...



来源:https://stackoverflow.com/questions/32031681/silverstripe-write-page-to-live-stage-or-draft-how-it-works

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!