【发布时间】:2012-03-01 13:11:00
【问题描述】:
我有一系列网站选项。
然后我有一个函数可以验证我的用户使用 foreach 循环提交的所有数据。您不会知道大多数变量来自哪里,但在这种情况下这并不重要:
function settings_validation($input) {
$settings = my_array();
foreach ($settings as $setting) {
//this function leaves the old field's value if there's no input
if($type == 'something' && empty($input[$id])) {
$valid_input[$id] = $option[$id];
}
//this function updates the field if input is not NULL
else if($type == 'something' && !empty($input[$id])) {
$valid_input[$id] = $input[$id];
}
return $valid_input;
};
$input 是提交后生成的所有表单字段的数组,如果字段为空,则其值为“”。
现在,麻烦来了。
当我想擦除其中一个字段时,这是不可能的 - 当我在此字段中没有留下任何数据并提交表单时,它不会发送任何数据,并且总是触发第一个 if 语句并将字段留在擦除前的状态。
如果我删除第一个 if 语句然后提交表单,它会将新数据发送到我编辑的选项并删除所有其他选项(因为它们的 $inputs 是空的)。
我不确定我应该做什么样的检查来区分函数生成的空 $input 和用户操作创建的空 $input?
我正在使用的 settings_validation() 函数是另一个名为 register_setting() 的函数的回调,我在这里问是因为不是在 WPSE 上,而是与 PHP 相关的问题。
【问题讨论】:
-
你循环了
$settings,但你从来没有在循环中使用它......你只引用$input,$valid_input和$option,索引$id......在那里缺少一些代码?有些东西没有加起来...... -
一切都很好,
$id = $setting['id']仅此而已。 -
如果不知道所有变量的来源,就很难判断。如果表单要编辑已经存在的内容,那么您肯定会使用该信息填充它,如果它返回为空,那是因为用户已将其删除?
标签: php arrays function if-statement