Php 在ezpublish中以编程方式删除图像

Php 在ezpublish中以编程方式删除图像,php,ezpublish,Php,Ezpublish,ezPublish中有一个对象具有图像属性。 该属性有一个图像作为值,我希望在PHP中以编程方式将其删除。(图像值,而不是属性本身) 你知道怎么做吗?根据eZImageType::customObjectAttributeHTTPAction(),你应该使用eZImageType::deleteStoredObjectAttribute() 该方法的实现显示了它是如何在内部完成的。该方法不会删除属性本身,只删除外部数据(图像、别名、将xml设置为空)。对于2013年10月15日之前的eZ Pub

ezPublish中有一个对象具有图像属性。 该属性有一个图像作为值,我希望在PHP中以编程方式将其删除。(图像值,而不是属性本身)


你知道怎么做吗?

根据
eZImageType::customObjectAttributeHTTPAction()
,你应该使用
eZImageType::deleteStoredObjectAttribute()


该方法的实现显示了它是如何在内部完成的。该方法不会删除属性本身,只删除外部数据(图像、别名、将xml设置为空)。

对于2013年10月15日之前的eZ Publish(Legacy)版本或git标记,“v2014.03.1”包括eZ Publish 4.7“deleteStoredObjectAttribute”方法-要求在以下提交之前在eZ Publish Legacy版本中传递非空的第二个参数值:

见:

这包括eZ Publish 4.7以及问题作者的特定用例。这就是为什么这个答案比其他答案更准确

如果没有第二个非null参数,别名图像文件将从文件系统中删除,但是。。。图像别名信息(别名引用、元数据等)仍将与内容对象属性content(数据库存储xml)一起存在

如果没有第二个非参数,图像将显示为仍然部分存在于内容对象中,但图像预览(即:系统使用图像路径、元数据)将显示损坏的图像,从而表示原始内容对象属性内容的损坏/不完整副本

为了获得最大的向后兼容性,最好始终传递非空的第二个参数,因为2013年10月15日以后的eZ Publish Legacy版本甚至不以任何方式使用第二个参数

以下是一个完整的源代码示例,它是删除内容对象图像属性内容(并从磁盘中删除相关元数据和图像文件)所需的源代码,这几乎是eZ Publish Legacy任何版本的最佳方法

// The following two variables are filled with dummy values.
// You will need to change the contents of these variables to match
// your actual use case identifiers (Content Object ID / Class Attribute Identifier)
$objectID = 42;
$objectImageAttributeIdentifier = 'profile_image';

$object = eZContentObject::fetch( $objectID );

$objectID = $object->attribute( 'id' );
$objectCurrentVersion = $object->attribute( 'current_version' );
$objectDataMap = $object->attribute( 'data_map' );

if ( isset( $objectDataMap[ $objectImageAttributeIdentifier ] ) )
{
    $objectImageAttribute = $objectDataMap[ $objectImageAttributeIdentifier ];

    if ( $objectImageAttribute->attribute( 'has_content' ) )
    {
        $objectImageDataType = $objectImageAttribute->dataType();
        $objectImageDataType->deleteStoredObjectAttribute( $objectImageAttribute, $objectCurrentVersion );

        eZContentCacheManager::clearContentCacheIfNeeded( $objectID );
    }
}

ez publish的哪个版本?ezpublish 4.7(传统版)您知道如何更新属性吗?或者您对更新任何类型的属性都有疑问吗?我知道如何更新属性,甚至知道如何更新图像属性。但我不知道如何删除该图像。谢谢Bertrand。运行此方法并使用eZContentFunctions::updateAndPublishObject()更新对象后,图像将从FileySem中删除,但在ezadmin面板中,我得到的结果是:未更正这意味着其中一条数据库记录未正确清理,或者ezcontentobject_属性中的xml,或ezimagefile中的条目。你能展示一下你用来做这件事的代码吗?