Я пытаюсь напечатать мои пары данных ключ / значение в моем представлении 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>
получить доступ к массиву данных в представлении
$data['url'] = $url; $data['getfield'] = $getfield; $data['requestMethod'] = $requestMethod; $data['data'] = $data; $this->load->view('search_page2', $data);
иначе только переменные с именами в качестве своих ключей будут доступны в представлении, а не в переменной данных, которую мы передаем.
это в ответ на ваш комментарий к ответу juan. Фактически, если вы пытаетесь заставить его работать по-другому.
код контроллера не будет меняться от кода, который вы опубликовали.
$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 уже доступны как соответствующие именованные переменные внутри представления.
Переменные для использования в вашем шаблоне:
$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);