使用Codeigniter从数据库填充表单字段



我正试图从数据库中检索的数据中填充两个表单字段,以便用户更新它们。该表被称为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

我的问题有两个:

  1. 如何访问我的视图表单中的这些数据以及
  2. 如何用它填充相应的字段

我是Codeigniter的新手,我的问题可能看起来很简单,但任何帮助都将不胜感激。提前谢谢。

这里发生了一些事情:

  1. $data是传递给视图的数组或对象。然后,它的ELEMENTS在视图中作为变量可用。因此,控制器中的$data['mylement']='somevalue'将作为视图中的$somevalue访问。

  2. 如果将第二个参数传递给form_open((方法,那么它应该是将生成的标记的一对键/值属性。类似,数组('class'=>'form_class','id'=>'form_id'(

  3. 如果要设置表单输入的值,请使用视图辅助函数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:'')));?>

您必须对所有表单字段

执行相同的操作Jcory已经回答了您的问题,但让我补充一点。
  1. 在您的模型中,而不是return $query->result();这样做return $query->row();,这是因为使用返回对象要求您应该循环查看视图中的结果集
  2. $data['entry'] = $this->entries_model->get_data();代替$data = $this->entries_model->get_data();
  3. 在你看来,这样做<?php echo form_input('title',set_value('title',$entry->title));?>我希望这些变化能解决问题

相关内容

  • 没有找到相关文章

最新更新