如何在silverstripe数据扩展中自动发布图像

2023-12-07

我试图将上传字段添加到自定义数据扩展并让图像字段正常工作。但是,我上传的图像仍处于概念模式,我必须转到“文件”选项卡才能发布它。我尝试使用 Silverstripe 文档中提供的代码,但这似乎只适用于常规页面。我发现了一个和我类似的问题:如何在 Silverstripe 模型管理中自动发布上传到数据对象的文件然而这似乎只适用于 DataObjects。

这是我当前的代码:

<?php
use SilverStripe\Forms\LiteralField;
use SilverStripe\Forms\TextField;
use SilverStripe\Forms\FieldList;
use SilverStripe\Forms\HTMLEditor\HTMLEditorField;
use SilverStripe\AssetAdmin\Forms\UploadField;
use SilverStripe\Assets\Image;
use SilverStripe\Assets\Storage\AssetStore;
use SilverStripe\Versioned\Versioned;
use SilverStripe\ORM\DataExtension;

class CustomSiteConfig extends DataExtension 
{   
    private static $db = [          
    ];      

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

    private static $owns = [
        'Logo'
    ];  

    private static $extensions = [
        Versioned::class,
    ];  

    private static $versioned_gridfield_extensions = true;  

    public function updateCMSFields(FieldList $fields) 
    {
        $fields->addFieldToTab("Root.Header", LiteralField::create("","<h1>Header</h1>"));                  
        $fields->addFieldToTab("Root.Header", UploadField::create('Logo', 'Logo'));                     
    }       
}

有谁知道解决方案吗?


当前存在一个错误,如果拥有的数据对象未进行版本控制,则该错误会阻止发布“拥有的”记录。

我认为您遇到了这个错误,因为SiteConfig没有版本控制,因此在保存时不会发布拥有的文件/图像。

在解决此错误之前,您可以使用onAfterWrite挂钩您的扩展以发布文件:

public function onAfterWrite()
{
    if ($this->owner->LogoID) {
        $this->owner->Logo()->publishSingle();
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在silverstripe数据扩展中自动发布图像 的相关文章

  • 显式删除会话cookie会产生什么影响?

    我使用 php session 来维护用户的会话 Session 在登录后创建 在注销或超时后销毁 我需要管理面板中的一个选项来强制注销任何用户 如果他在网站上处于活动状态 我怎样才能做到这一点 我正在考虑删除临时会话文件 这应该有效地破坏
  • 如何更改codeception phpbrowser/mink超时

    我正在尝试使用代码接收创建测试 以检查页面在高负载的情况下是否正常工作 不幸的是 如果页面负载非常高并且测试开始 我会收到这样的错误 Codeception Exception ModuleConfig Codeception Util M
  • 如何仅删除页面的自动段落格式,而不删除帖子的自动段落格式(WordPress)

    我已经熟悉这个在 WordPress 中删除自动段落格式的小技巧 remove filter the content wpautop remove filter the excerpt wpautop 但是添加这个函数 php删除整个网站的
  • php中的$$是什么意思? [复制]

    这个问题在这里已经有答案了 变量后面的两个背对背 是什么意思 像这样 id 我在哪里可以找到更多相关信息 谢谢 In PHP 意味着您将给至少一名维护程序员带来多年的痛苦和折磨 请注意 您最终可能会成为维护程序员 它是一个可变变量 想象一下
  • div 中的文本字符有限,添加“阅读更多”链接并在单击链接时显示所有字符

    我有一个 div 里面有文本 使用 PHP 和 MySQL 显示 结构如下 div class description p Here is a lot of text p div 我想在 p 标签内的文本超过 100 个字符时显示 阅读更多
  • Ajax文件上传

    我想使用 Ajax 和 php 上传文件 我有一个表格
  • 切换到 mysqli 是个好主意吗?

    我正在考虑为我的所有 php 项目切换到 mysqli 我的代码编写方式 我运行非常简单的网站并构建了自己的基本框架 我在所有网站上使用该框架 我在修改函数和类时不应该遇到太多问题 然而 我只听说过关于准备好的语句的积极的事情 除了一些关于
  • PHP-docker容器中的环境变量

    我想在我的 docker 容器中显示一个环境变量 PHP 脚本如下所示 我使用 OpenShift 来启动容器 PHP 容器显示 env is 现在我更改容器的 dc 配置 oc env dc envar USER Pieter deplo
  • 带 url 参数的 Laravel post 路由

    我面临着幼虫路由的大墙 我似乎找不到解决方案 我在视图模板中有此表单
  • 如何使用 jQuery Ajax 将 PHP 数组值传递到另一个文件?

    这是我的代码
  • 付款成功后保存到数据库(paypal)

    我试图找出在客户使用 paypal 支付商品费用后将数据 之前以表单提交 保存到数据库的最佳方法 沿着这个过程的一些事情 1 在实际网站上填写表格 gt 2 登录 Paypal gt 3 立即付款 PayPal gt 4 数据已插入数据库
  • PHP 脚本不断执行 mmap/munmap

    我的 PHP 脚本包含一个循环 它只不过是回显和取消引用指针 如 tab othertab i gt 中的内容 直到昨天 这个脚本开始变得非常慢 比以前慢了 50 倍 之前 它一直运行良好 使用 strace 后 我发现 90 的情况下 脚
  • 合并 2 个数组并合并数字键的结果

    我有 2 个数组 我希望通过每个数字键将其中合并 分组在一起 例如 Array1 2009 gt 131 2008 gt 940 2007 gt 176 2006 gt 1 Array2 2008 gt 9 2007 gt 3 我希望输出是
  • php oracle客户端oci8安装出现什么问题

    我尝试了安装 PHP Oracle 客户端的所有过程 1 我安装了客户端版本8和32位 2 我在php ini中取消了oci的注释 3 重新启动Wamp 4 不确定是否真的安装 但我在 php ini 中得到了引用 5 但仍然无法连接 泰汉
  • 当我使用 session_start() 时,Xampp 7.0.1 Apache 崩溃

    当我在 PHP 中使用 session start 启动会话时 我的 Apache 服务器停止工作 我正在使用 Windows 版 Xampp 7 0 1 我的配置文件如下所示 即使我把它放在文件的第一行 它也不起作用 有人知道如何解决这个
  • PHP Intl 扩展线程安全吗?

    我一直在阅读有关 PHP 中的语言环境的内容 看起来setlocale 线程有问题 我对线程不太熟悉 文档提到它不是线程安全的 我想让我的项目能够处理某些数字格式 并且 Intl 扩展似乎很有趣 http php net manual en
  • PHP LDAP 查询获取特定安全组的成员

    我正在努力让 LDAP 查询工作来为我提供安全组的成员 我们的活动目录结构设置为 DC domain DC co dc uk然后 我们有一个名为 公司用户 的 OU 其中有一个用于 IT 和标准的 OU 在这些中我们创建了用户 所以我被设置
  • PHP 中的encodeURI() ?

    PHP 中是否有一些不编码的encodeURI 函数 我现在用这个 function encodeURI url http php net manual en function rawurlencode php https develope
  • PHP 共享标头而不使用服务器端脚本?

    到目前为止我总是通过 PHP 解决简单的问题 您有一个包含页眉 菜单 页脚和内容字段的网站 每个页面的页眉 菜单和页脚通常是相同的 在没有 PHP 或任何其他服务器端语言的情况下 如何使页眉 菜单和页脚数据仅存在于一个文件中 例如 您不会有
  • 通过身份验证保护 CodeIgniter 2 应用程序的正确方法是什么?

    I have Ion Auth http benedmunds com ion auth 正确安装并在我的服务器上运行 我也有默认的代码点火器2 新闻 教程在同一个 CI 安装中工作 我只是在玩 并对使用身份验证系统 封闭 或保护整个应用程

随机推荐

  • 多维 std::array [重复]

    这个问题在这里已经有答案了 在C 中 如何创建多维std array 我试过这个 std array
  • 如何创建“动态”WHERE 子句?

    第一 谢谢 我完成了我的另一个项目 并得到了很大的惊喜 现在一切都按预期进行 感谢一些有帮助的思想家 所以我开始下一个项目 我想要得到这样的东西 SELECT FROM tablename WHERE field1 content AND
  • 通过传递输出迭代器从函数填充 std::[container]

    我想通过传递输出迭代器从函数内部填充容器 因为据我所知 这是最有效的方法 例如 template
  • SDL 事件处理不起作用

    我目前正在通过阅读 Lazy foo 教程来学习 SDL 我在 Linux 上使用代码块 13 12 我无法使事件处理正常工作 我基本上是在尝试显示图像 效果很好 但无论我单击关闭按钮多少次 它都不会关闭 Code include
  • 比较向量值:1 个元素与所有其他元素

    我想知道如何将向量的 1 个元素与另一个向量中的所有元素进行比较 举个例子 假设 x lt c 1 10 y lt c 10 11 12 13 14 1 7 现在我可以逐个比较元素 x y 1 FALSE FALSE FALSE FALSE
  • 计算集合列表中所有组合的交集

    我有一套集合 我想找到仅在每个集合组合的交集中找到的项目数 我基本上想做与在维恩图中创建数字相同的事情 一个基本的例子可能会更清楚 a set 1 2 5 10 12 b set 1 2 6 9 12 15 c set 1 2 7 8 15
  • 如何分割 Tensorflow 数据集?

    我有一个基于一个 tfrecord 文件的张量流数据集 如何将数据集拆分为测试数据集和训练数据集 例如 70 训练 30 测试 Edit 我的张量流版本 1 8 我已经检查过 没有可能的重复项中提到的 split v 函数 我也在使用 tf
  • Angular 2 - 如何有条件地向我的组件添加样式?

    我有一个带有样式表的组件 可以正确加载 如下所示 Component selector open account styleUrls open account component scss templateUrl open account
  • 如何从不同的模型/控制器渲染局部视图?

    我有以下名为 Categories 的部分视图 位于 Views Category Categories 中 model IEnumerable
  • 如何将运行lwuit的j2me转换为android?

    如何将使用 lwuit 库的 J2ME 应用程序转换为 Android apk 我尝试使用 mircoemulator 进行转换 但是当我启动应用程序时 它显示错误并退出 读这篇文章 适用于 Android 的 LWUIT 这里清楚地讲述了
  • ggplot2中仅显示一个文本值

    我试图将文本打印限制为条形图中的一个变量 我怎样才能只标记粉红色的条601 215 399 456 ggplot df aes Var1 value label value fill Var2 geom bar stat identity
  • cassandra 2.2 CQl Shell 支持 python 2.7

    尝试启动 cql Shell 时出现错误 gt cqlsh CQL Shell supports only Python 2 7 gt 我已经安装了python2 7但它仍然给出相同的错误 我必须设置一些路径吗 我已经使用此命令从 data
  • Python - 使用 pandas 多重处理多个大尺寸文件

    我有一个y csv文件 文件大小为 10 MB 包含来自Jan 2020 to May 2020 我每个月还有一个单独的文件 例如data 2020 01 csv 它包含详细的数据 每个月文件的文件大小约为1 GB 我正在分割y csv按月
  • GUI 在循环时变得无响应

    单击按钮后 表单将变得无响应 直到解析函数完成其工作 我想将 searchAll 函数移至线程 我确实阅读了类似问题的几个答案 但我不明白如何 class MyForm QDialog def init self super init se
  • 连接到 SFTP 服务器时出现 SocketException:名称有效,但未找到请求类型的数据

    我正在尝试使用 SharpSsh 库连接我的 sftp 服务器 但出现以下错误 System Net Sockets SocketException 0x80004005 The requested name is valid but no
  • Flutter 在本机应用程序中打开本地资源(PDF)

    我正在尝试将我的应用程序与 PDF 捆绑在一起 并让用户在本机查看器中打开它 我努力了 将 PDF 的数据复制到 临时目录 或 文档目录 来自 path provider 并从那里打开 要打开 我使用 url launcher 打开文件 我
  • 使用 angular2 限制输入字段的长度

    我已经实现了使用 angular2 限制输入字段的指令 它在桌面浏览器中工作正常 但在 Android 移动设备中无法工作 成分 import LimitToDirective from directives limitedvalidati
  • 按两个变量组进行汇总

    考虑一个简化的数据集 真实的数据集有更多的列和行 df tp tf weight 1 FWD RF 78 86166 2 MF LF 81 04566 3 DEF LF 80 70527 4 DEF LF 82 96071 5 DEF RF
  • 如何将position_dodge()和geom_line()与重叠分组结合起来?

    当 x 轴上的分组变量 颜色和线条重叠但总是不同时 是否可以使用 geom line 在躲避点之间绘制一条线 下图中的灰线应该始终连接两个具有相同名称的数据点 它们位于相同的分组 2 x 轴 内 但位于不同的分组 2 颜色 中 可重现的例子
  • 如何在silverstripe数据扩展中自动发布图像

    我试图将上传字段添加到自定义数据扩展并让图像字段正常工作 但是 我上传的图像仍处于概念模式 我必须转到 文件 选项卡才能发布它 我尝试使用 Silverstripe 文档中提供的代码 但这似乎只适用于常规页面 我发现了一个和我类似的问题 如