我正试图从数据库中检索的数据中填充两个表单字段,以便用户更新它们。该表被称为records
,它非常简单:
记录_ID
标题
内容
我的型号:
function get_data()
{
$r = $this->uri->segment(3);
$query = $this->db->get_where('records', array('Record_ID' => $r));
return $query->result();
}
我的控制器:
function set_values()
{
$data = $this->entries_model->get_data();
$this->load->view('update_view', $data);
}
和我的更新记录视图:
<?php
echo form_open('site/update',$data);?>
Title:
<?php echo form_input('title',set_value('title'));?>
Content:
<?php echo form_input('content',set_value('content'));
echo form_submit('submit', 'Submit');?>
<?php echo form_close();?>
问题是我得到了以下错误:
遇到PHP错误
严重性:通知
消息:未定义的变量:数据
文件名:views/update_view.php
线路编号:10
我的问题有两个:
- 如何访问我的视图表单中的这些数据以及
- 如何用它填充相应的字段
我是Codeigniter的新手,我的问题可能看起来很简单,但任何帮助都将不胜感激。提前谢谢。
这里发生了一些事情:
-
$data是传递给视图的数组或对象。然后,它的ELEMENTS在视图中作为变量可用。因此,控制器中的$data['mylement']='somevalue'将作为视图中的$somevalue访问。
-
如果将第二个参数传递给form_open((方法,那么它应该是将生成的标记的一对键/值属性。类似,数组('class'=>'form_class','id'=>'form_id'(
-
如果要设置表单输入的值,请使用视图辅助函数set_value((。在您的情况下,使用控制器设置将传递给视图的$data数组中的元素。
$data['form_values'] = array('title' => $title, 'content' => $content);
然后,在视图中:
您应该向视图文件传递一个数组。所以替换:
$data = $this->entries_model->get_data();
带有:
$data['entries_data'] = $this->entries_model->get_data();
并且在您的视图文件上替换:
echo form_open('site/update',$data);?>
带有:
echo form_open('site/update',$entries_data);?>
首先您需要以正确的方式传递数据
更换
$data = $this->entries_model->get_data();
with:
$data['data'] = $this->entries_model->get_data();
为了在set_value中设置值,您需要进行内联条件检查,以检查数据是否为对象
<?php echo form_input('title',set_value((is_object($data)?$data->title:'')));?>
您必须对所有表单字段
- 在您的模型中,而不是
return $query->result();
这样做return $query->row();
,这是因为使用返回对象要求您应该循环查看视图中的结果集 - 用
$data['entry'] = $this->entries_model->get_data();
代替$data = $this->entries_model->get_data();
- 在你看来,这样做
<?php echo form_input('title',set_value('title',$entry->title));?>
我希望这些变化能解决问题