我正在尝试在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);
// ...
应用/视图/ 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>
答案 0 :(得分:4)
模板中使用的变量是
$url, $getfield, $requestMethod
$data
是传递给视图但不能直接访问的变量的容器
如果您确实需要视图可访问$data
,请使用其他包装器对象
$container = array();
$container ['url'] = $url;
$container ['getfield'] = $getfield;
$container ['requestMethod'] = $requestMethod;
$container ['data'] = $data;
$this->load->view('search_page2', $container);
答案 1 :(得分:3)
要在视图中访问数据数组,请执行
$data['url'] = $url;
$data['getfield'] = $getfield;
$data['requestMethod'] = $requestMethod;
$data['data'] = $data;
$this->load->view('search_page2', $data);
否则只有名称作为键的变量才能在视图中使用,而不是我们传递的数据变量。
这是对你对胡安回答的评论的回应 实际上,如果你正在尝试以其他方式使其工作。
控制器代码与您发布的代码没有任何变化。
$data['url'] = $url;
$data['getfield'] = $getfield;
$data['requestMethod'] = $requestMethod;
$this->load->view('search_page2', $data);
但在视图代码中你只需要这样做。
<h2>url <?PHP echo $url; ?><br /></h2>
<h2>getfield <?PHP echo $getfield; ?><br /></h2>
<h2>requestMethod <?PHP echo $requestMethod; ?><br /></h2>
而不是foreach循环,因为$ data中的键已经作为视图中的相应命名变量可用。