您好我正在尝试设置ArticlePage的默认值(仅限一次)。因为它是某种博客系统,我使用日期和时间。日期和时间得到整合,但每次我更改和更新页面,日期和时间也会发生变化。这意味着,网址会发生变化。 如何修改populateDefaults只更新一次? onBeforeWrite的任何机会? 因为页面一旦保存就不应该是新的,但它会不断变化 mille grazie *
ArticlePage.php
<?php
class ArticlePage extends Page {
private static $db = array(
'Place' => 'Text',
'Date' => 'Date',
);
public function populateDefaults(){
parent::populateDefaults();
// set title and urlsegment only once ?
$this->Title = _t('Page.TITLE', "post-" . date("Ymd-His"));
$this->URLSegment = _t('Page.URLSEGMENT', "post-" . date("Ymd-His"));
}
public function onBeforeWrite(){
parent::onBeforeWrite();
if ($this->Status == 'New page'){ // <-- should not be new after saving once
$this->populateDefaults();
}
if ($this->Verison == 0){
$this->populateDefaults();
}
}
}
答案 0 :(得分:1)
您只需要使用populateDefaults()函数。
Silverstripe会在创建页面时自动调用它......
private static $db = array(
'Place' => 'Text',
'Date' => 'Date',
);
public function populateDefaults(){
parent::populateDefaults();
// set title and urlsegment only once ?
$this->Title = _t('Page.TITLE', "post-" . date("Ymd-His"));
$this->URLSegment = _t('Page.URLSEGMENT', "post-" . date("Ymd-His"));
}
}