简而言之,用户ID 被保存在代码中其他任何地方都不存在的数据库中。我是 PHP 和 Joomla 的初学者,刚刚完成了一个大组件,它在很大程度上很简单:
组件描述
- 主屏幕有所有用户的列表,按部门过滤。
- 有两个主表,其值列在该主屏幕上。单击一个值,打开 edit.php 视图。
- Chapters 表的链接包含用户 ID、类 ID,如果记录存在则记录 ID,如果不存在,则使用 Joomla 的 JForm 本地保存功能在保存时填充记录 ID。
- 有 9 个章节,因此每个用户最多有 9 个条目,具体取决于他们所处的完成阶段。
- 填写信息,保存/保存并关闭/取消是唯一的选项。
问题描述 - 如果用户根本没有第 1-9 章的条目,则保存用户 ID 127。127从哪里来?没有线索。如果有一章中有一个条目,那么它可以正常工作。
代码片段:
保存:(view.html.php)
JToolBarHelper::apply('chapters.apply', 'JTOOLBAR_APPLY');
JToolBarHelper::save('chapters.save', 'JTOOLBAR_SAVE');
XML (章节.xml)
<field name="chapter_userid"
type="text"
label="Student UserID"
description=""
size="10"
readonly="true"
class="readonly"
/>
编辑表格:(edit.php)
<li>
<?php echo $this->form->getLabel('chapter_userid'); ?>
<?php echo $this->form->getInput('chapter_userid', null, $this->UserID ); ?>
</li>
例如用户170的 HTML 输出(在数据库中保存为 127,Joomla 表示已正确保存):
<input type="text" name="jform[chapter_userid]" id="jform_chapter_userid" **value="170"** class="readonly" size="10" readonly="readonly"/>
我做过的事情:
进行调试
很多添加值,看看是什么触发了这一点。
使用调试在整个 html 输出(主屏幕和 edit.php)中搜索“127” - 没有
在编辑屏幕顶部使用 get_defined_vars(),搜索 127 - 没有。
拔了很多头发
我不明白为什么如果 userID=170 被正确地传递到它被保存为 127 的 html 输出。有没有人见过这样的事情?我还能做些什么来调试吗?检查的地方?我怀疑这是 Joomla 记忆中的某种价值,但我也认为 get_defined_vars 会以某种方式吐出它。或者某种二进制 2^8 偏移 1(好的,所以现在我在 MIDI 领域,但我很绝望)。
谢谢!