CodeIgniter3如何绑定输入框值?编辑表单输入框为空排查
CodeIgniter3 编辑表单输入框值为空问题修复
你当前打印的原始数据结构如下:
Array ( [0] => stdClass Object ( [id] => 14 [book_id] => test_565 [book_name] => Pelerin [book_number] => 2323232 [address] => ssss [status] => 1 ) )
一共两处核心代码错误,分别在控制器和视图层:
1. 控制器传参不符合CI3视图加载规则
CI3调用$this->load->view()时,第二个参数必须传入字符串键名的关联数组,框架会自动对这个数组执行extract(),把键名转换为视图层可直接调用的变量。你当前直接传入带数字下标的索引数组,extract()无法生成合法的PHP变量,视图层根本读不到你传的图书数据。
原错误控制器代码:
$data = $res->stations; //return print_r($data); $this->load->view('edit-book',$data);
修正方案:把图书数据放到关联数组中再传入视图,键名可以自定义为book_info,建议直接取单条数据省掉视图层的索引书写:
$book_info = $res->stations[0]; $this->load->view('edit-book', [ 'book_info' => $book_info ]);
2. 视图层变量调用语法错误
原视图代码有两个语法问题:一是不存在$data这个变量,二是数组下标没加引号、没写对应索引,PHP解析时会直接报错,无法拿到正确的字段值。
原错误视图代码:
<input type="text" name="product_title" class="form-control" value="<?php echo $data[stations]->book_name;?>" id="exampleInputName1" placeholder="">
修正后代码:
<input type="text" name="product_title" class="form-control" value="<?php echo html_escape($book_info->book_name);?>" id="exampleInputName1" placeholder="">
这里加的
html_escape()是CI自带的转义函数,避免图书名里有引号、特殊字符时打乱HTML属性结构。
内容的提问来源于stack exchange,提问作者dev
相关产品推荐
相关产品推荐

