Codeigniter设置变量

3

我有一个名为categories的控制器,其中我有

function description($id=null) {
    $this->load->helper(array('form', 'url'));
    $this->load->library('session');
    $this->load->view('category/description');
    $this->load->model('userdata_model');
    $data = $this->userdata_model->desc($id);
    $this->load->view('category/description', $data);
}

现在当我执行print_r($data);时,它会给我以下结果。
Array
(
    [0] => stdClass Object
        (
            [id] => 4481
            [title] => Dvd Recorder Post
            [image_name] => 
            [image_name_work] => 
            [video_name] => 
            [work_type] => tape-recrder
            [description] => Test first..
            [agency] => 
            [services] => 
            [photographer] => 
            [company] => 
            [director] => 
            [dop] => 
            [userid] => 
            [display_order] => 99999
            [latest_work] => No
            [status] => Active
            [post_adddate] => 2012-03-26 10:14:07
            [date] => 2012-03-26 10:14:07
            [sub_cat] => dvd-reorder
            [views] => 75
            [url] => Dvd-recorder-post
            [post_cache] => 
            [post_cat_id] => 0
            [post_link] => 
            [post_pubdate] => 
            [post_seo_url] => 
            [post_status] => 0
            [post_type] => 0
        )

)

现在,当我尝试在视图页面中的description.php访问$data时,它会给出以下错误。
A PHP Error was encountered

Severity: Notice

Message: Undefined variable: data

Filename: category/description.php

Line Number: 2
有人知道为什么吗?这与IT技术有关。
4个回答

2

CodeIgniter使用extract函数在视图页面中生成变量。因此,您需要将关联数组作为$this->load->view()调用的第二个参数传递进去。在这种情况下,如果您想要将变量命名为data,则需要传递一个具有元素键为data且值为从模型检索到的数据的数组。

$data = array('data' => $this->userdata_model->desc($id));
$this->load->view('category/description', $data);

它可以工作,但仍然显示错误..在视图页面中未定义变量数据。 - Rajat Goyal
它能运行,但还是显示错误?这没有任何意义。你能解释一下你的意思吗?错误完全相同吗?还是由于不同的未定义变量引起的错误? - Kemal Fadillah

0

因为您在调用模型之前调用了视图,请删除该行代码,然后就差不多了。

$this->load->helper(array('form', 'url'));
$this->load->library('session');
$this->load->model('your model');
$data['Posts'] = $this->YourModel->ModelMethod();
$this->load->view('Your view', $data);

在您的观点中,像这样使用foreach

<?php foreach($Posts as $item): ?>
  <?= item['id']   ;?> Or if you have STD Class <?= item->id   ;?>
<?php endforeach; ?>

0

你可以这样做

 $data["ids"] = $this->userdata_model->desc($id);
 $this->load->view('category/description', $data);

在您的视图中,您可以使用以下方式访问变量:

$ids

0

$data 是一个数组,包含了所有你想在视图页面上展示的信息。

在控制器中:

$this->load->model( 'userdata_model' );
// .. other code
$data = array(
        'description' => $this->userdata_model->desc($id)
    );
$this->load->view('category/description', $data );

在视图中:

<div><?php echo $description; ?></div>

遇到了一个 PHP 错误严重程度:注意消息:未定义变量:description文件名:category/description.php行号:1。它会给出这个错误。同时我得到了数组的结果。 - Rajat Goyal
在你的代码中,我看到了两个视图代码调用:$this->load->view('category/description' );$this->load->view('category/description', $data );,请删除第一个。当第一次调用时,在视图中没有传递 $data。在第二次调用中,$data 数组被正确地传递。 - doktorgradus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接