【问题标题】:Codeigniter Set variableCodeigniter 设置变量
【发布时间】:2012-09-15 02:31:38
【问题描述】:

我有一个名为 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

有人知道为什么吗?

【问题讨论】:

    标签: php arrays codeigniter


    【解决方案1】:

    因为你在调用模型之前调用了你的视图,所以删除那一行,就差不多了

    $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; ?>
    

    【讨论】:

      【解决方案2】:

      $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.php 行号:1。它给出了这个错误。我也得到了数组的结果
      • 在您的代码中,我看到 2 个视图代码调用:$this-&gt;load-&gt;view('category/description' );$this-&gt;load-&gt;view('category/description', $data );,首先删除。当它第一次调用时,没有$data 通过视图。在第二次调用中$data 数组正确传递。
      【解决方案3】:

      你可以这样做

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

      在您看来,您可以使用

      访问变量
      $ids
      

      【讨论】:

        【解决方案4】:

        CodeIgniter 使用extract 在视图页面中生成变量。因此,您必须传入一个关联数组作为$this-&gt;load-&gt;view() 调用的第二个参数。在这种情况下,如果您希望将变量命名为 data,则必须传入一个数组,其中元素键为 data,值是您从模型中检索到的数据。

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

        【讨论】:

        • 它可以工作,但仍然显示错误.. 视图页面中未定义的变量数据
        • 它可以工作,但它仍然显示错误?这没有任何意义。你能解释一下你的意思吗?错误是否完全相同?还是由不同的未定义变量引起的错误?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多