【问题标题】:Silverstripe default image for upload fieldSilverstripe 上传字段的默认图片
【发布时间】:2018-08-01 14:01:40
【问题描述】:

我正在开发一个使用 SilverStripe 4 构建的网站,用户可以在该网站上上传图片。

有没有办法在用户上传一张图片之前在数据库中设置默认图片?

我知道我可以检查布局中是否存在。但我宁愿避免这样做,因为我将在多个地方使用该图像。

我知道我可以覆盖 populageDefaults() 来设置日期和其他类型字段的默认值。但是图像呢?

这是处理图像的类的 php 代码:

<?php

use SilverStripe\Forms\DateField;
use SilverStripe\Assets\Image;
use SilverStripe\Forms\TextareaField;
use SilverStripe\AssetAdmin\Forms\UploadField;

use Page;

class ArticlePage extends Page {

   private static $can_be_root = false;
   private static $db = [
      'DateEnd' => 'Date',
      'DateStart' => 'Date',
      'Teaser' => 'Text',
   ];

   private static $has_one = [
      'Photo' => Image::class,
   ];

   private static $owns = [
      'Photo',
   ];

   public function getCMSFields() {
      $fields = parent::getCMSFields();
      $fields->addFieldToTab('Root.Main', DateField::create('DateStart', 'Start Date'), 'Content');
      $fields->addFieldToTab('Root.Main', DateField::create('DateEnd', 'End Date'), 'Content');
      $fields->addFieldToTab('Root.Main', TextareaField::create('Teaser'), 'Content');
      $fields->addFieldToTab('Root.Main', $photo = UploadField::create('Photo', 'Article Image'), 'Content');
      $photo->getValidator()->setAllowedExtensions(['jpg']);
      return $fields;
   }

   public function populateDefaults() {
      $this->DateEnd = date('Y-m-d');
      $this->DateStart = date('Y-m-d');
      $this->Teaser = 'A short teaser.';
      parent::populateDefaults();
   }
}

【问题讨论】:

    标签: silverstripe silverstripe-4


    【解决方案1】:

    可以,图片的ID可以设置如下...

    public function populateDefaults()
    {
       $this->PhotoID = 1;//Assuming you know the ID of the Image
       parent::populateDefaults();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-07
      • 1970-01-01
      • 2018-05-07
      • 2022-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多