我试图将表单数据保存到DB。在controller save()函数中有一个语句
$data = $model->validate($form, $data);
但它总是返回空白。我将问题追溯到/libraries/joomla/form/form.php中的filter()函数(随joomla包一起提供)。这是一些代码(缩写):
$input = new JRegistry($data);
$output = new JRegistry;
foreach ($fields as $field)
{
// Initialise variables.
$name = (string) $field['name'];
if ($input->exists($name)){
$output->set($name, $this->filterField($field, $input->get($name, (string) field['default'])));
}
}
$ input看起来像:
JRegistry Object ( [data:protected] => stdClass Object ( [jform] => stdClass Object ( [title] => Utility Model/Patent application [ap_name] => d ...) [option] => com_eipoapplications [task] => save ) )
循环中的每个$ name始终包含表单元素名称(如'title','ap_name'...)。 但if条件语句总是返回false。有没有人帮助我知道为什么JRegistry exists()函数找不到元素?
答案 0 :(得分:0)
我认为您在表单和数据之间存在不一致。
我们假设表单中包含名为title
的字段。
$ data数组应具有同名键下的值:
$data = array(
'title' => 'Utility Model/Patent application',
'ap_name' => 'd'
);
或使用print_r
Array
(
[title] => Utility Model/Patent application
[ap_name] => d
)
如果此类字段没有数据,则省略验证。如果所有数据键都错误,则函数返回空数组。
问题是,它是如何发生的:/