Concrete5 具体5:何时以及如何在块控制器中使用duplicate()函数?

Concrete5 具体5:何时以及如何在块控制器中使用duplicate()函数?,concrete5,Concrete5,我发现很难理解控制器的duplicate()函数的概念 在C5文档中,它说: 复制块时自动运行。最有可能发生这种情况的是,已批准版本中的块被更新… 当一个已批准版本中的块被更新时,它不是像save()函数所处理的那样被保存了吗 我也不确定这个函数里面有什么。有人能澄清一下吗 此外,duplicate()函数是否处理从剪贴板粘贴块时的情况?在保存块之前,需要对其进行复制,以便将其保存到新版本。(然后,新版本与创建的新页面版本相关联。) 如果你看一下,你会发现基类有一个非常简单的复制方法。如果您的块

我发现很难理解控制器的duplicate()函数的概念

在C5文档中,它说:

复制块时自动运行。最有可能发生这种情况的是,已批准版本中的块被更新…

当一个已批准版本中的块被更新时,它不是像save()函数所处理的那样被保存了吗

我也不确定这个函数里面有什么。有人能澄清一下吗


此外,duplicate()函数是否处理从剪贴板粘贴块时的情况?

在保存块之前,需要对其进行复制,以便将其保存到新版本。(然后,新版本与创建的新页面版本相关联。)

如果你看一下,你会发现基类有一个非常简单的复制方法。如果您的块很简单(主要是因为它只有一个DB表),那么这应该可以很好地工作,并且您不必重载它

幻灯片块中有一个需要重载duplicate()的示例。它不仅有“普通”表,还有一个图像ID的链接表。因此,它首先调用父方法,该方法复制普通块表,然后自己进行复制

继续编辑/粘贴一些内容块,同时查看
表,您将看到何时创建新块。记住在编辑之间发布

您会注意到,当创建新的投标时,他们会得到一个新的
投标
(这很有意义)。现在看一下
btContentLocal
。您会注意到,每个新块ID都有一个新条目(与
中的
出价
匹配)。这就是
duplicate()
所做的——每次编辑块时,它都会创建一个新行。一切都很好,它自动工作

但是如果在
MyBlock的第二个表中有一些行,那么我保证这些行不会使用新的
bID
创建/复制。因此,如果块依赖具有
bID
链接到块实例的辅助表,则新(更新)块将具有新的
bID
,并且无法“查找”旧记录

幻灯片就是这样做的。您有
出价
==1。有一堆
btSlideshowImg
行,其中
bID
1,每个文件一行。编辑幻灯片块时,您会得到
bID
==2。现有的
btSlideshowImg
行不会使用新的
bID
进行更新,它们会被保留,以便您可以还原版本。(这就是恢复工作正常的原因…不是
duplicate()
处理的恢复,而是新版本。)


(从剪贴簿(剪贴板)粘贴块后,不会立即调用Duplicate()。这与创建特定页面类型的新页面非常相似——该块最初是作为别名创建的,只有在首次编辑时才会复制,但Duplicate()会被调用。)

在保存块之前,它需要复制,以便保存到新版本。(然后,新版本与创建的新页面版本相关联。)

如果你看一下,你会发现基类有一个非常简单的复制方法。如果您的块很简单(主要是因为它只有一个DB表),那么这应该可以很好地工作,并且您不必重载它

幻灯片块中有一个需要重载duplicate()的示例。它不仅有“普通”表,还有一个图像ID的链接表。因此,它首先调用父方法,该方法复制普通块表,然后自己进行复制

继续编辑/粘贴一些内容块,同时查看
表,您将看到何时创建新块。记住在编辑之间发布

您会注意到,当创建新的投标时,他们会得到一个新的
投标
(这很有意义)。现在看一下
btContentLocal
。您会注意到,每个新块ID都有一个新条目(与
中的
出价
匹配)。这就是
duplicate()
所做的——每次编辑块时,它都会创建一个新行。一切都很好,它自动工作

但是如果在
MyBlock的第二个表中有一些行,那么我保证这些行不会使用新的
bID
创建/复制。因此,如果块依赖具有
bID
链接到块实例的辅助表,则新(更新)块将具有新的
bID
,并且无法“查找”旧记录

幻灯片就是这样做的。您有
出价
==1。有一堆
btSlideshowImg
行,其中
bID
1,每个文件一行。编辑幻灯片块时,您会得到
bID
==2。现有的
btSlideshowImg
行不会使用新的
bID
进行更新,它们会被保留,以便您可以还原版本。(这就是恢复工作正常的原因…不是
duplicate()
处理的恢复,而是新版本。)


(从剪贴簿(剪贴板)粘贴块后,不会立即调用Duplicate()。这与创建特定页面类型的新页面非常相似——该块最初是作为别名创建的,只有在您第一次编辑时才会复制,但Duplicate()会被调用。)

每当分配模板或复制/粘贴块时,都会调用复制功能

对于需要保存在多个表中的附加组件,复制函数是必不可少的

加载项只能识别一个表,并且只能自动管理该表

滑落