Php eZ Publish 5 API-CreateContent命令错误
我正试图按照烹饪书上的以下示例创建内容: 目前我正在尝试创建“文件夹”内容,执行脚本时出现以下错误: PHP致命错误:在第53行的/vagrant/application/ezpublish_legacy/kernel/search/plugins/ezsearchengine/ezsearchengine.PHP中调用非对象上的成员函数attribute() 代码如下:Php eZ Publish 5 API-CreateContent命令错误,php,symfony,command,ezpublish,Php,Symfony,Command,Ezpublish,我正试图按照烹饪书上的以下示例创建内容: 目前我正在尝试创建“文件夹”内容,执行脚本时出现以下错误: PHP致命错误:在第53行的/vagrant/application/ezpublish_legacy/kernel/search/plugins/ezsearchengine/ezsearchengine.PHP中调用非对象上的成员函数attribute() 代码如下: foreach ($tabPreImportData as $object) { $output
foreach ($tabPreImportData as $object) {
$output->writeln('<info> Object ID: ' . $object['id_object'] . '</info>');
$objectToMigrate = eZContentObject::fetch($object['id_object']);
$contentType = $contentTypeService->loadContentTypeByIdentifier('folder');
$contentCreateStruct = $contentService->newContentCreateStruct($contentType, 'eng-US');
foreach ($objectToMigrate->dataMap() as $attrIdentifier => $attrValue) {
$contentCreateStruct->setField($attrIdentifier, $attrValue->DataText);
}
$locationCreateStruct = $locationService->newLocationCreateStruct(2);
// create a draft using the content and location create struct and publish it
$draft = $contentService->createContent($contentCreateStruct, array($locationCreateStruct));
$content = $contentService->publishVersion($draft->versionInfo);
}
在检查堆栈跟踪时导致问题
更多信息:
- 该对象是从eZ 4数据库中获取的
- 要在eZ 5数据库中重新创建
谢谢。您正在将旧代码混合到新的堆栈代码中,例如:“eZContentObject::fetch” 我不认为这是必要的或正确的,因为您似乎在遗留上下文之外运行遗留代码。您应该能够在不使用遗留代码的情况下编写代码。从您共享的代码来看,我不认为有任何需要遗留代码,如果我是您,我根本不会在这个任务中使用遗留代码 如果您坚持在新的堆栈代码中使用遗留代码,那么必须只在遗留内核存储模块中运行它,否则许多不可预知的事情可能会出错或根本不起作用 我想这是你提到的那条错误的线 我也不再信任运行共享代码的数据库。您应该删除很可能已损坏的数据库,安装生产备份的新副本,重写代码以不使用旧代码,因为它不是必需的,然后重试 还请记住,eZ平台与eZ Publish数据兼容,这意味着新堆栈代码可以读取(和更改)使用eZ Publish创建的数据库内容,因为它们在新堆栈中没有任何区别。这也意味着他们不需要使用“eZContentObject::fetch”,即使它位于旧机柜中
另外,此帖子来自:谢谢,我会找到另一种方法。
$content = $contentService->publishVersion($draft->versionInfo);