1

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

我的问题是双重的:

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

我是 Codeigniter 的新手,我的问题可能看起来很简单,但我们将不胜感激。提前致谢。

4

4 回答 4

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);?>
于 2013-03-28T17:37:46.687 回答
0

这里发生了一些事情:

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

  2. 如果您将第二个参数传递给form_open()方法,它应该是将要生成的标记的属性的键/值对。比如,array('class' => 'form_class', 'id' => 'form_id')

  3. 如果要设置表单输入的值,请使用视图帮助函数set_value()。在您的情况下,使用控制器在您将传递给视图的 $data 数组中设置元素。$data['form_values'] = array('title' => $title, 'content' => $content);

然后,在视图中:

于 2013-03-28T17:39:44.583 回答
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:'')));?>

你必须为你的所有表单域做同样的事情

于 2013-03-28T17:47:32.677 回答
0

Jcory 已经回答了你的问题,但让我补充一点。

  1. 在你的模型中而不是return $query->result();这样做return $query->row();是因为使用返回一个返回对象需要你在你的视图中循环遍历结果集
  2. 而不是$data = $this->entries_model->get_data();这样做$data['entry'] = $this->entries_model->get_data();
  3. 在您看来,这样做<?php echo form_input('title',set_value('title',$entry->title));?> 我希望这些更改可以解决问题
于 2013-07-12T20:31:26.057 回答