CodeIgniter视图中的未定义变量

Ant*_*ony 6 php codeigniter

我正在尝试在CodeIgniter视图中打印我的键/值对数据.但是,我收到以下错误.我做错了什么?

遇到PHP错误

严重性:注意

消息:未定义的变量:数据

文件名:views/search_page2.php

行号:8

应用/控制器/ search.php中

// ...
        $this->load->library('/twitter/TwitterAPIExchange', $settings);
        $url = 'https://api.twitter.com/1.1/followers/ids.json';
        $getfield = '?username=johndoe';
        $requestMethod = 'GET';     
        $twitter = new TwitterAPIExchange($settings);

        $data['url'] = $url;
        $data['getfield'] = $getfield;
        $data['requestMethod'] = $requestMethod;        

        $this->load->view('search_page2', $data);
// ...
Run Code Online (Sandbox Code Playgroud)

应用/视图/ search_page2.php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Twitter Test</title> 
</head>
<body>
<?php print_r($data); ?>

<?php foreach ($data as $key => $value): ?>
    <h2><?php echo $key . ' ' . $value . '<br />'; ?></h2>
<?php endforeach ?>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

Jua*_*des 5

模板中使用的变量是

 $url, $getfield, $requestMethod
Run Code Online (Sandbox Code Playgroud)

$data是传递给视图且无法直接访问的变量的容器

如果您确实需要$data访问视图,请使用不同的包装对象

 $container  = array();
 $container  ['url'] = $url;
 $container  ['getfield'] = $getfield;
 $container  ['requestMethod'] = $requestMethod;
 $container  ['data'] = $data;
 $this->load->view('search_page2', $container);
Run Code Online (Sandbox Code Playgroud)

  • @Anthony您传递多个变量就像使用“$data”一样,添加到“$data”中的所有键都将作为变量传递给模板 (2认同)

mit*_*esh 5

要在视图中访问数据数组,请执行以下操作

    $data['url'] = $url;
    $data['getfield'] = $getfield;
    $data['requestMethod'] = $requestMethod;        
    
    $data['data'] = $data;
    $this->load->view('search_page2', $data);
Run Code Online (Sandbox Code Playgroud)

否则,只有以名称作为键的变量在视图中可用,而不是我们传递的数据变量。

更新:

这是对您对胡安回答的评论的回应,实际上,如果您试图使其以建议的其他方式工作。

控制器代码与您发布的代码没有任何变化。

    $data['url'] = $url;
    $data['getfield'] = $getfield;
    $data['requestMethod'] = $requestMethod;
    $this->load->view('search_page2', $data);
Run Code Online (Sandbox Code Playgroud)

但在视图代码中你需要这样做。

 <h2>url <?PHP echo $url; ?><br /></h2>
 <h2>getfield <?PHP echo $getfield; ?><br /></h2>
 <h2>requestMethod <?PHP echo $requestMethod; ?><br /></h2>
Run Code Online (Sandbox Code Playgroud)

而不是 foreach 循环,因为 $data 中的键已经可以作为视图内相应的命名变量使用。