0

我试图将表单数据保存到数据库。在控制器的 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() 函数找不到元素?

4

1 回答 1

0

我认为您在表单和数据之间存在不一致。

假设表单包含一个带有 name 的字段title。$data 数组在同名键下应该有一个值:

$data = array(
  'title' => 'Utility Model/Patent application',
  'ap_name' => 'd'
);

或使用 print_r

Array
(
    [title] => Utility Model/Patent application
    [ap_name] => d
)

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

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

于 2013-05-23T09:41:36.903 回答