【发布时间】:2021-11-01 08:11:18
【问题描述】:
我从另一个开发者那里接管了一个项目。
代码允许我从表单的文本输入中获取数据,但不能从复选框输入中获取数据。
最初的开发者编写了这些函数(以及其他):
protected function getObjectString($key,$html=false,$escape=false)
{
$string = isset($this->classData[$key]) ? $this->classData[$key]."" : "";
if($html == true) $string = htmlspecialchars($string);
if($escape == true) $string = addslashes($string);
return $string;
}
和
protected function getObjectBool($key,$toString=false,$trueVal="yes",$falseVal="no")
{
$bool = intval(isset($this->classData[$key]) ? $this->classData[$key] : 0);
//$bool = intval(isset($this->classData[$key]) ? 1 : 0);
if($toString == true)
{
if($bool > 0) return $trueVal;
else return $falseVal;
}
return $bool > 0;
}
当我使用时
getObjectString("Email",false,false);
我得到了表单元素的值
<div class="row">
<div class="col-lg-3 formlabel">E-mail</div>
<div class="col-lg-9"><input type="text" class="form-control" name="Email" value=""></div>
</div>
但是当我使用时
getObjectBool("EmailMandatory",false,"yes","no");
我应该从
获取值 (checked=1, unchecked=0)<div class="row">
<div class="col-lg-3 formlabel">Mandatory</div>
<div class="col-lg-9">
<label style="font-weight: normal;">
<input type="checkbox" name="EmailMandatory" value="1" checked>
Use of mail address is mandatory
</label>
</div>
</div>
但是,值(来自 getObjectBool)始终为空。我做错了什么?
根据 Abronsius 教授的要求添加:
abstract class common_library_dbbase
{
/** CLASS PROPERTIES **/
protected $classData = array();
/** CONSTRUCTOR **/
function __construct($data,$tableName,$primaryIDName,$accountTable=false,$cacheEnabled = true)
{
// Set member data
$this->tableName = $tableName;
$this->primaryIDName = $primaryIDName;
$this->cacheEnabled = $cacheEnabled;
$this->accountTable = $accountTable;
// Is same class
if(is_object($data) && get_class($this) == get_class($data))
{
$this->classData = $data->toArray;
}
// Is array data
else if(is_array($data))
{
$this->classData = $data;
}
// Is number, load from db
else if(intval($data) > 0)
{
$this->classData = $this->loadByID($data);
}
}
}
【问题讨论】:
-
什么是
$this->classData?一个复选框,如果未选中,将不会出现在 POST 数组中,那么这很重要吗? -
classData 是 php 类 dbbase 中的受保护数组。我会将整个班级添加到我的问题中。编辑:显然我不能添加整个班级。我会尝试找出最重要的部分。
-
我相当怀疑,如果你添加所有的类可能太多了 - 但该受保护数组的内容可能有用
-
我添加了一些类,希望能对主题有所启发:)
-
由于该方法依赖于
$this->classData[$key],因此在该方法尝试使用$this->classData[$key]时了解该数组包含的内容更为重要
标签: javascript php forms