未找到 Silverstripe ImageField

Silverstripe ImageField not found

我正在尝试扩展 Member class 并向其添加一些字段。同时,我将此 DataObject 设置为一个页面,以便我可以转到 www.mysite.com/member/show/1 并查看该用户的个人资料。我还没有到达创建会员页面的地步。现在,除了 ImageField 之外,我的所有字段都在工作。我收到以下错误:

PHP Fatal error:  Class 'ImageField' not found in ../mysite/code/Secure/Objects/MemberDecorator.php on line 66

密码是:

<?php
class MemberDecorator extends DataExtension {
    private static $db = array(
        "Alias" => 'Varchar',
        "About" => 'Text',
        "Birthday" => 'Date',
        "FavoriteGames" => 'Varchar',
        "Facebook" => 'Varchar',
        "Twitter" => 'Varchar',
        "Instagram" => 'Varchar',
        "Twitch" => 'Varchar',
        "Youtube" => 'Varchar',
        "SecretQuestionOne" => "Varchar",
        "SecretAnswerOne" => "Varchar",
        "SecretQuestionTwo" => "Varchar",
        "SecretAnswerTwo" => "Varchar",
        "SecretQuestionThree" => "Varchar",
        "SecretAnswerThree" => "Varchar"
    );
    private static $has_one = array(
        'Photo' => 'Image'
    );

    //Fields to show in the DOM table
    static $summary_fields = array(
        'Thumb' => 'Photo',
        "Alias" => 'Alias',
        "About" => 'About',
        "Birthday" => 'Birthday',
        "FavoriteGames" => 'FavoriteGames',
        "Facebook" => 'Facebook',
        "Twitter" => 'Twitter',
        "Instagram" => 'Instagram',
        "Twitch" => 'Twitch',
        "Youtube" => 'Youtube',
        "SecretQuestionOne" => "SecretQuestionOne",
        "SecretAnswerOne" => "SecretAnswerOne",
        "SecretQuestionTwo" => "SecretQuestionTwo",
        "SecretAnswerTwo" => "SecretAnswerTwo",
        "SecretQuestionThree" => "SecretQuestionThree",
        "SecretAnswerThree" => "SecretAnswerThree"
    );

    function getCMSFields() {
        $fields = parent::getCMSFields();
        $this->extend('updateCMSFields', $fields);
        return $fields;
    } 

    function updateCMSFields(FieldList $fields) { 
        $fields->push(new TextField("Alias", "Alias"), 'Members');
        $fields->push(new TextAreaField("About", "About"), 'Members');
        $fields->push(new DateField("Birthday", "Birthday"), 'Members');
        $fields->push(new TextField("FavoriteGames", "Favorite Games"), 'Members');
        $fields->push(new TextField("Facebook", "Facebook"), 'Members');
        $fields->push(new TextField("Twitter", "Twitter"), 'Members');
        $fields->push(new TextField("Instagram", "Instagram"), 'Members');
        $fields->push(new TextField("Twitch", "Twitch"), 'Members');
        $fields->push(new TextField("Youtube", "Youtube"), 'Members');
        $fields->push(new TextField("SecretQuestionOne", "Secret Question One"), 'Members');
        $fields->push(new TextField("SecretAnswerOne", "Secret Answer One"), 'Members');
        $fields->push(new TextField("SecretQuestionTwo", "Secret Question Two"), 'Members');
        $fields->push(new TextField("SecretAnswerTwo", "Secret Answer Two"), 'Members');
        $fields->push(new TextField("SecretQuestionThree", "Secret Question Three"), 'Members');
        $fields->push(new TextField("SecretAnswerThree", "Secret Answer Three"), 'Members');
        $fields->push(new ImageField('Photo', 'Photo', Null, Null, Null, 'Uploads/member-photos/'), 'Members');
    }

    function Link() { 
        return Director::absoluteBaseURL() . SSViewer::topLevel()->URLSegment . "/member/" . $this->ID; 
    }

    //Generate our thumbnail for the DOM
    public function getThumb()
    {
        if($this->PhotoID)
            return $this->Photo()->CMSThumbnail();
        else   
            return '(No Image)';
    }
}

根据我找到的每个示例和文档,ImageField 似乎是一个有效字段。最后一点细节是我正在遵循本指南:http://www.ssbits.com/tutorials/2010/dataobjects-as-pages-part-1-keeping-it-simple/

SilverStripe 3 使用 UploadField

http://api.silverstripe.org/3.1/class-UploadField.html