Сообщение: Неопределенная переменная: данные

#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): ?>