0

我正在为 Concrete 5 (5.4.0+) 创建一个新包。插入一个新块效果很好。但是当我编辑现有块时,它会在我单击“保存”时再次尝试插入,而不是更新。

数据库中影响这一点的两个字段是 bID 和 eID。两者都是non-auto-incrementing INT(10) default none NOT NULL

这些值在控制器中的关联数组中传递,$args我正在调用父保存方法Parent::save($args);

任何帮助/输入将不胜感激。PS:我在网上查看了这个,C5论坛确实出现了一些我尝试过的东西,主要与数据库字段有关,但我仍然得到上述错误。如果可能,我不想覆盖 ADODB save() 方法。

- - 编辑 - -

也许我看错了。让我说一下我正在努力实现的目标。我需要 eID 在块的多次编辑中保持 37(例如)。出价可以增加 AFAIC。

如何让 eID 在编辑时保持 37,但在创建新实例时增加 1?有道理?

第二个表引用 eID 字段,并且此表上条目的编辑实例必须具有相同的 eID,除非创建新实例。Sry - 我知道像泥浆一样清晰。

4

2 回答 2

0

您是说您的页面上出现了一个新的块实例,而不是现有块的新版本?我认为问题不在于表中插入了新记录,因为通常在编辑块时会创建新记录。C5 保留旧版本的块。

我所做的自定义块从未需要调用父保存方法。您只需要一个编辑表单来收集数据并指定它对应的数据库字段,并且父控制器知道在提交表单时如何处理它。

例如,如果您正在更新块表中有一个名为“firstname”的文本字段,您可以在 edit.php 文件中添加一行,如下所示:

<?php echo $form->text('firstname', $firstname, array('style' => 'width: 320px'));?>

我的块编辑器几乎没有其他内容,除了用于添加标签和使表单看起来更好的 html/CSS 内容。$form 对象负责其他所有事情。

真正帮助我理解块和块控制器的一件事是下载并安装“设计器内容”附加组件。免费。您可以使用它来构建一些自定义块,然后查看它生成的代码以执行各种功能。

于 2012-09-10T16:07:51.750 回答
0

所以我查看了现有的包来复制这个功能,我的问题已经演变成这样:PHP Concrete 5 Pass Variables to Add.php

跟着兔子走;)

于 2012-09-12T06:34:42.223 回答