我正在为Drupal6构建一个模块(它所做的并不重要;我花了
长的
找其他的解决办法和滚动我自己的肯定是最简单的),我遇到了一些概念性的障碍。
很像
uploadpath
模块,我创建的目录基于(
通过
替换模式)节点的属性。例如,使用名为“foobar”的“assignmentindex”contenttype创建一个节点,我的模块将创建一个文件夹。
sites/default/files/assignmentindex/Foobar
.
问题发生在
update
事件,当目标目录已经存在,或者由于其他一些奇怪的原因无法创建时(我现在唯一能想到的是inode用完了,但我确信还有其他的失败条件)。显然,为了避免丢失数据,原始文件夹需要单独保存,但是这样会破坏目录和节点之间的关联。因此,我看到了3种不同的可能性:
-
回滚整个节点
-
仅回滚更改的标题
-
不回滚任何内容(但显示错误)
弗斯特
问题是哪一个最好?回滚整个节点会删除大量潜在的工作,仅回滚标题会造成混乱,回滚任何内容都不意味着名称不同步。我现在最喜欢的是恢复标题,但我真的很感激你的想法。
这个
第二
问题是:如何?我已经换了相关的
$op
到
presave
(从
更新
)使原始节点可用
通过
$old_node = node_load($node->id);
如果要回滚一个字段,可能只需要
$node->title = $old_node-title;
但这似乎是次优,我很好奇是否有更好的方法来实现这一点。
很抱歉问了这么长的问题,非常感谢您的帮助。