gpt4 book ai didi

silverstripe - 在 Silverstripe ModelAdmin 中调整上传图像的大小

转载 作者:行者123 更新时间:2023-12-04 04:23:45 26 4
gpt4 key购买 nike

我是 Silverstripe 的新手,无法在文档或 SO 上找到我的问题的答案。

我纯粹将 Silverstripe 用作 CMS:没有网站作为前端。

我有最简单的 DataObject Product和 ModelAdmin ProductAdmin如下:

class Product extends DataObject
{

private static $db = array(
'Name' => 'Varchar',
'Copy' => 'Text'
);

private static $has_one = array(
'MyImage' => 'Image'
);

}


class ProductAdmin extends ModelAdmin
{

private static $managed_models = array(
'Product'
);

private static $url_segment = 'product';

private static $menu_title = 'Product';

}

经过 /dev/build ,我的管理面板已构建,我可以像往常一样将高分辨率图像上传到“上传”目录。

我要 上传中 CMS 将图像重新采样为几种不同的大小,同时保留原始图像。新的和原始的图像也需要保存到 FlushGeneratedImagesTask 不会删除它们的位置。通过查看文档,我知道可以轻松调整图像大小,但我不清楚在哪里(或如何)添加所需的自定义功能。任何人都可以帮忙吗?

(我认为 Silverstripe 3.1 - resize image on upload 最接近回答这个问题,但是缺少一个步骤来说明如何让 CMS 使用新的/覆盖的功能。)

我正在使用 Silverstripe 3.1 版

最佳答案

  • 创建一个扩展 Image 的新类 MyImage。
  • 创建函数 onBeforeWrite()在您的 MyImage 类中。
  • 在此函数中,创建一个新图像 $image = Image::create() .您将在此处设置重采样图像的文件名、名称、标题、ParentID 等
  • 使用 $image->SetWidth(...) 调整图像大小
  • 更新您的阵列 Product::$has_oneMyImage => MyImage
  • 关于silverstripe - 在 Silverstripe ModelAdmin 中调整上传图像的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32461059/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com