Сообщение: неопределенная переменная: данные - PullRequest
1 голос
/ 26 октября 2011

Когда я пытаюсь запустить следующее приложение в 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');
    }
}

Кто-нибудь знает, как это исправить?

Ответы [ 5 ]

5 голосов
/ 26 октября 2011

Вы должны изменить свой контроллер и просмотреть

массив, который вы отправляете через данные, должен выглядеть следующим образом:

$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. Если вы хотите что-то отправить в представление, поместите внутри в $ data как $ data ['key'] = $ val;

0 голосов
/ 19 апреля 2019

Пожалуйста, структурируйте свою почтовую модель следующим образом


        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;?>

0 голосов
/ 26 октября 2011

Я думаю, что сообщение об ошибке исходит не от вашего контроллера, а от вашего взгляда (blog.php).Вы забыли передать $ data в представление.Вы должны реструктурировать переменную, передаваемую вашему представлению, примерно так:

$data['data'] = $this->db->get('posts');
$this->load->view('blog', $data);
0 голосов
/ 26 октября 2011

Переменные должны передаваться в представление в виде пар ключ-значение внутри массива. Здесь это объясняется.

0 голосов
/ 26 октября 2011

Попробуйте использовать $blog вместо $data в первой строке вашего представления.
Я не уверен, но вы назначаете $data клавише под названием blog в вашем контроллере ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...