postign中的codeigniter关联数组

时间:2009-07-27 08:57:38

标签: codeigniter webforms

我通常在我的表单中命名我的数据库特定字段,如“objectname [columnname]”,我认为CI无法使用$ this-> input-> post('objectname [columnname]')访问这些值,我该怎么办?地狱中没有机会重新命名100多个表单字段。我实际上不喜欢CI,它实际上是通过改变事实上的PHP规范来阻碍进展......

6 个答案:

答案 0 :(得分:11)

您使用的是$_POST['objectname[columnname]']还是$_POST['objectname']['columnname']

你有没有试过后者的等价物

$obj = $this->input->post('objectname');
echo $obj['columnname'];

如果有效,你可以写自己的帮手,像post_val('objectname[columnname]')那样进行检索。

答案 1 :(得分:2)

我在寻找类似问题的同时看到了这篇文章,但是制定了一种CI方式来做到这一点,对不起,如果我复活它,但它确实在Google搜索结果中看起来相当高。

// Load the 'array' helper
$this->load->helper('array');
// Use the 'element' function to return an element from the array
echo element('ColumnName', $this->input->post('ObjectName'));

希望这可以帮助将来来这里的任何人。

答案 2 :(得分:1)

HTML code:

<input type="text" value="" name="myPostArrayName[]">
<input type="text" value="" name="myPostArrayName[]">

使用codeigniter处理表单:

$data = $this->input->post('myPostArrayName', TRUE);

您可以按照这样的顺序访问数据

echo 'Value of the first element in the form array is '.$data[0];
echo 'Value of the second element in the form array is '.$data[1];

我认为有权访问codeigniter文档的人最好添加一个简单的html post数组处理示例。

答案 3 :(得分:0)

我似乎可以依赖$ _POST var,但我认为这是重置的?

答案 4 :(得分:0)

您可以将post数组作为对象进行转换,并使用方法链接返回子数组(现在的属性),使用PHP 5.3的方法将所有内容链接在一行上。

通过创建一个名为MY_Input的类来扩展输入类,并将扩展类放在application / core文件夹中。 CI 2.0将自动使用带有MY_前缀的扩展类,您可以向此新类添加方法。扩展输入类比制作助手更清晰。

此方法将post数组或嵌套数组(父项下面的子数组)作为对象进行转换。

/* Cast an array from CI post as an object and return the object */
public function post_obj($key = null){
  $post_return = $this->post($key);
  if (false === $post_return)
    return false;
  return (object)$post_return;
}

现在,我可以使用PHP 5.3的对象链接方法在一行代码中检索嵌套值。

$active = $this->input->post_obj('user')->active;

答案 5 :(得分:-6)

我刚刚使用$ _POST ['objectname'] ['colname']选项,因为我通常会这样做,即使这可能不是CI方式..