我正在尝试从数据库中检索的数据中填充两个表单字段,以便用户更新它们。该表名为records
,非常简单:
RECORD_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的新手,我的问题可能看起来过于简单,但任何帮助都会受到赞赏。提前谢谢。
答案 0 :(得分:0)
您应该将数组传递给视图文件。所以替换:
$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);?>
答案 1 :(得分:0)
这里有一些事情发生:
$ data是passed to a view的数组或对象。然后它的ELEMENTS可用作视图中的变量。因此,控制器中的$ data ['myelement'] ='somevalue'将在视图中以$ somevalue的形式访问。
如果将第二个参数传递给form_open()方法,则它应该是将生成的标记的键/值属性对。比如,array('class'=&gt;'form_class','id'=&gt;'form_id')
如果要设置表单输入的值,请使用视图助手函数set_value()。在您的情况下,使用控制器设置您将传递给视图的$ data数组中的元素。 $data['form_values'] = array('title' => $title, 'content' => $content);
然后,在视图中:
答案 2 :(得分:0)
首先你需要以正确的方式传递数据
替换
$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:'')));?>
你必须为你的所有表单字段做同样的事情
答案 3 :(得分:0)
Jcory已经回答了你的问题,但让我补充一点。
return $query->result();
执行此操作return $query->row();
这是因为使用返回返回对象需要您在视图中循环遍历结果集$data = $this->entries_model->get_data();
执行此操作$data['entry'] = $this->entries_model->get_data();
<?php echo form_input('title',set_value('title',$entry->title));?>
我希望这些改变可以解决问题