#php #codeigniter
#php #codeigniter
Вопрос:
Когда я пытаюсь запустить следующее приложение в CodeIgniter, я получаю следующую ошибку:
A PHP Error was encountered
Severity: Notice
Message: Undefined variable: data
Filename: views/blog.php
Line Number: 1
Я пытался разобраться в этом почти час, и я не могу заставить его работать. Мое представление выглядит так:
<?php foreach($data->result() as $row): ?>
<h1><?php echo $row->title; ?></h1>
<p><?php echo $row->post; ?></p>
<?php endforeach; ?>
Мой контроллер выглядит так:
<?php
class Blog extends CI_Controller {
public function index()
{
$this->load->database();
$data = $this->db->get('posts');
$this->load->helper('url');
$this->load->view('header');
$this->load->view('blog', $data);
$this->load->view('footer');
}
}
Кто-нибудь знает, как это исправить?
Комментарии:
1.
$data
не устанавливается, вы действительно установили эту переменную?2. $data = $this-> db-> get(‘posts’); ?
Ответ №1:
Вы должны изменить свой контроллер и просмотреть
массив, который вы отправляете через данные, должен быть таким:
$data['post'] = $this->db->get('posts');
и, по вашему мнению:
<?php foreach($post->result() as $row): ?>
<h1><?php echo $row->title; ?></h1>
<p><?php echo $row->post; ?></p>
<?php endforeach; ?>
codeiginter отправляет переменные для просмотра с помощью $data array . Если вы хотите отправить что-то в представление, поместите внутри в $data как $data[‘key’] = $val;
Ответ №2:
Попробуйте использовать $blog
вместо $data
в первой строке вашего представления.
Я не уверен, но вы присваиваете $data
ключ, вызываемый blog
в вашем контроллере…
Ответ №3:
Переменные должны быть переданы в представление в виде пар ключ-значение внутри массива. Здесь это объясняется.
Ответ №4:
Я думаю, что уведомление об ошибке возникает не на вашем контроллере, а на вашем представлении (blog.php ). Вы забыли передать $data в представление. Вы должны реструктурировать переменную, передаваемую вашему представлению, примерно так:
$data['data'] = $this->db->get('posts');
$this->load->view('blog', $data);
Ответ №5:
пожалуйста, структурируйте свою модель post следующим образом
public function __construct()
{
$this->load->database();
}
public function get_posts(){
$query=$this->db->get('posts');
return $query->result_array();
}
}
и ваш почтовый контроллер, подобный этому
public function index()
{
$data['posts']=$this->Post_model->get_posts();
$this->load->view('templates/header');
$this->load->view('posts/index.php', $data);
$this->load->view('templates/footer');
}
и в вашем представлении содержимое файла отображается таким образом 🙂
<?php foreach($posts as $post): ?>
<h3><?php echo $post['post_title'];?></h3>
<small><?php echo $post['post_date'];?></small>
<p><a href="<?php echo site_url('/posts/'.$post['post_title']);?>">Read more</a></p>
<?php endforeach;?>
Комментарии:
1. Итак, по сути, ваш ответ заключается в подтверждении принятого ответа, и единственная полезная строка: $data = $this-> db-> get(‘posts’);
Ответ №6:
В файле контроллера, если вы хотите устранить эту ошибку, напишите
$data['variable-name']
затем в файле представления вместо использования $data
используйте $variable_name
i.e
<?php foreach($variable_name->result() as $row): ?>