codeigniter - передать данные для просмотра

Хорошо, у меня простой вопрос. Я использую фреймворк codeigniter для создания простого блога. Когда я настраиваю только контроллер и представление, я могу нормально распечатать информацию о своей базе данных (протокол блога) в своем представлении. Когда я использую метод представления контроллера модели, я терплю неудачу.

Вот что я хотел бы реализовать в настройке представления контроллера метода.

мой оригинальный вид, который работает:

<?php
//is there an array from your search form?
if($_GET){

$books = $this->db->get('blog');//query the blog table in the database
if($books->num_rows() < 1)//are there clients to show?
{
    echo 'There are no blog post'; //error message if no post
}

else
{
    foreach(result() as $row)//loop through the blog
    {
        echo $row->title."<br>";//display each titles info
    }
}
}
?>

Это то, что я установил для своей новой модели.

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Blog_Model extends CI_Model {

function get($args = null)
{
    $query = $this->db->get('blog');
    return $query->result();
    foreach(result() as $row)//loop through the books

}

function insert($data)
{

    $this->db->insert('blog', $data);
}

function update($data,$id)
{
    $this->db->where("id",$id);

    $this->db->update('blog', $data);
}
 function delete($id)
{
    $this->db->where("id",$id);


    $this->db->delete('blog');
}
}

это мой новый контроллер

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Blog extends CI_Controller {
public function index()
{
    $this->load->model('blog_model', 'blog');
    $data['blogs'] = $this->blog->get();
    $this->load->view('blog',$data);

}


}

Я не уверен, что делать с моим новым видом? Я просто хочу повторить просмотр блога


person Thomas Lyle    schedule 09.01.2014    source источник


Ответы (2)


Ну, вы делаете foreach в модели после функции возврата.

Итак, вы возвращаете только это:

$query->result()

Возможно, вам следует выполнить foreach в представлении, это было бы лучше, поскольку модель должна просто возвращать, а не обрабатывать информацию. Лучшим местом в этом случае будет контролер или возможное представление — в зависимости от того, насколько вы строги.

Я некоторое время не работал с CodeIgniter, поэтому могу попробовать это: Контроллер:

class Blog extends CI_Controller
{
    public function index()
    {
        $this->load->model('blog_model', 'blog');
        $data['blogs'] = $this->blog_model->get()->result();
        $this->load->view('blog',$data);

    }


}

Вид

Here goes some text...
<?php
    foreach($blogs as $post)
    {
       echo $post['someData'];
       echo $post['someData2'];
    }
?>
After all this code...

Вы можете найти это (CodeIgniter Doc).

Надеюсь это поможет. Пытаться

person s1x    schedule 09.01.2014

Контроллер:

$data['blogs'] = $this->blog_model->get();

Даже если вы загружаете модель, чтобы вызвать ее функцию, вы должны передать ее имя.

Модель:

Всегда должен иметь result() или row() при применении запроса.

Надеюсь, это поможет в ваших начинаниях

person BigKingMilo    schedule 09.01.2014