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