Silverstripe:仅设置一次默认值

时间:2014-06-19 19:09:39

标签: php silverstripe

您好我正在尝试设置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();
            }       
    }
}

1 个答案:

答案 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"));
}

}