codeigniter - 将数据传递给视图

时间:2014-01-09 00:44:37

标签: php codeigniter argument-passing

好的我有一个简单的问题我正在使用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);

}


}

我不知道该为我的新观点做些什么?我只是想将博客卷回到视图

2 个答案:

答案 0 :(得分:1)

你在返回功能之后正在模型中做一个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...

您是否要查找this(CodeIgniter Doc)。

希望这会有所帮助。尝试

答案 1 :(得分:0)

<强>控制器:

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

即使您加载模型以调用其功能,您也必须传递其名称。

<强>型号:

在应用查询时,必须始终拥有result()row()

希望这有助于你的努力