JRegistry exists()返回空数组

时间:2013-05-23 07:53:39

标签: joomla joomla2.5 joomla-extensions

我试图将表单数据保存到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()函数找不到元素?

1 个答案:

答案 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
)

如果此类字段没有数据,则省略验证。如果所有数据键都错误,则函数返回空数组。

问题是,它是如何发生的:/