Image 从自定义表单放置/获取上传字段提交的图像->;银条3.1

Image 从自定义表单放置/获取上传字段提交的图像->;银条3.1,image,forms,file,silverstripe,Image,Forms,File,Silverstripe,我在使用UploadField编程时遇到了一个小问题。我已经创建了网页,使前端的轻CMS。但我不知道如何将此图像检索到«更新»页面 “创建”页面中有以下代码: $uploadField = new UploadField( 'ImageEvenement', 'Image' ); 这是我试图为«更新»页面工作的代码 $evenID = Session::get('evenementID'); $evenement = Versioned::get_by_stage('PageCalendrie

我在使用UploadField编程时遇到了一个小问题。我已经创建了网页,使前端的轻CMS。但我不知道如何将此图像检索到«更新»页面

“创建”页面中有以下代码:

$uploadField = new UploadField( 'ImageEvenement', 'Image' );
这是我试图为«更新»页面工作的代码

$evenID = Session::get('evenementID');
$evenement = Versioned::get_by_stage('PageCalendrierEvenement', 'Stage')->byID($evenID);
..
$SavedImage = File::get()->byID($evenement->ImageEvenementID)
$uploadField = new UploadField( 'ImageEvenement', 'Image', $SavedImage );
如何将提交的图像检索到$SavedImage?我从文件中获取ID的想法行不通

另一种方法:

$SavedImage = $evenement->ImageEvenement();
如果我从正在查看的$SavedImage转储数据:

Image Object
(
    [destroyed] => 
    [model:protected] => DataModel Object
        (
            [customDataLists:protected] => Array
                (
                )

        )

    [record:protected] => Array
        (
            [ClassName] => Image
            [Created] => 2015-07-15 14:41:24
            [LastEdited] => 2015-07-16 15:03:25
            [Name] => images.jpg
            [Title] => images
            [Filename] => assets/Membres/9/calendrier/images.jpg
            [ShowInSearch] => 1
            [ParentID] => 15
            [OwnerID] => 9
            [ID] => 22
            [RecordClassName] => Image
        )

    [changed:DataObject:private] => Array
        (
        )

    [original:protected] => Array
        (
            [ClassName] => Image
            [Created] => 2015-07-15 14:41:24
            [LastEdited] => 2015-07-16 15:03:25
            [Name] => images.jpg
            [Title] => images
            [Filename] => assets/Membres/9/calendrier/images.jpg
            [ShowInSearch] => 1
            [ParentID] => 15
            [OwnerID] => 9
            [ID] => 22
            [RecordClassName] => Image
        )

    [brokenOnDelete:protected] => 
    [brokenOnWrite:protected] => 
    [components:protected] => 
    [unsavedRelations:protected] => 
    [sourceQueryParams:protected] => 
    [failover:protected] => 
    [customisedObject:protected] => 
    [objCache:ViewableData:private] => Array
        (
        )

    [class] => Image
    [extension_instances:protected] => Array
        (
            [BetterButtonDataObject] => BetterButtonDataObject Object
                (
                    [owner:protected] => 
                    [ownerBaseClass:protected] => DataObject
                    [ownerRefs:Extension:private] => 0
                    [class] => BetterButtonDataObject
                )

            [SiteTreeFileExtension] => SiteTreeFileExtension Object
                (
                    [owner:protected] => 
                    [ownerBaseClass:protected] => File
                    [ownerRefs:Extension:private] => 0
                    [class] => SiteTreeFileExtension
                )

            [Hierarchy] => Hierarchy Object
                (
                    [markedNodes:protected] => 
                    [markingFilter:protected] => 
                    [_cache_numChildren:protected] => 
                    [owner:protected] => 
                    [ownerBaseClass:protected] => File
                    [ownerRefs:Extension:private] => 0
                    [class] => Hierarchy
                )

        )

    [beforeExtendCallbacks:protected] => Array
        (
        )

    [afterExtendCallbacks:protected] => Array
        (
        )

)
有什么想法吗

class PageCalendrierEvenement extends Page {

    private static $db = array(
        "Titre" => "Varchar(50)",
        "DateDepart" => "Date",
        "DateFin" => "Date",
    );

    private static $has_one = array(
        'Creator' => 'Member',
        'ImageEvenement' => 'Image',
    );

..
}

谢谢大家!

有一个关系需要在关系名称中加上“ID”后缀(保存到db…),例如

然后它会自动保存

或者,我为一个关系做什么:

$imageField = UploadField::create('ImageEvenement', 'Image');
$imageField->setAllowedFileCategories('image');
$imageField->setAllowedMaxFileNumber(1);

希望有帮助。

经过长时间的大脑搜索,我终于找到了窍门!要与UploadField一起使用的命令是setValue($value)withfileidinclude。我的最终代码是:

$evenement = Versioned::get_by_stage('PageCalendrierEvenement', 'Stage')->byID($evenID);

...

$uploadField = new UploadField( 'ImageEvenement', 'Image' );

$data['ImageID'] = $evenement->ImageEvenement()->ID; 

$fileIDs[]=$data['ImageID'];
$uploadField->setValue(array('Files' => $fileIDs));

就这样

我的代码工作正常,但不干净,不使用SilverStripe函数类。无法将图像保存到dataobject的原因是我没有使用:

$form->saveInto($evenement)
我要感谢您为我提供了get方法,以便在另一张表上填写值:


最后,一切都好了

能否粘贴页面和数据对象的相关$db和$has_one部分?图像与当前页面的关系如何?好的,我已粘贴到上面的代码。非常感谢。类pageCalendarEvent扩展了页面{private static$db=array(“Titre”=>“Varchar(50)”,“DateDepart”=>“Date”,“DateFin”=>“Date”);private static$has_one=array('Creator'=>'Member','imageevement'=>'Image',);…}向imageevement添加ID不起作用,当我提交表单时,我收到一条“服务器错误”消息。。。但是你的信息的第二部分帮助我解决了另一个问题;)对我的问题有点精确。从uploadfield添加图像并将其存储到数据库中也可以。我的问题是在自定义更新“evenement”页面上显示/检索要上载的图像字段。所有字段都显示在字段上,但不显示上载字段。。。我希望我的英语不是那么差;)提前感谢!
$form->saveInto($evenement)
$form->loadDataForm($evenement)