【问题标题】:Returning info to controller from model in codeigniter在codeigniter中从模型返回信息到控制器
【发布时间】:2025-12-21 11:25:12
【问题描述】:

我有这个模型函数:

        public function set_news()
        {
            $this->load->helper('url');

            $slug = url_title($this->input->post('title'), 'dash', TRUE);

            $data = array(
                'title' => $this->input->post('title'),
                'slug' => $slug,
                'text' => $this->input->post('text')
            );

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

如您所见,其中有一个名为$slug 的变量。 我调用这个函数的方式是通过一个控制器:

public function create()
        {
            $this->load->helper('form');
            $this->load->library('form_validation');

            $data['title'] = 'Create a news item';

            $this->form_validation->set_rules('title', 'Title', 'required');
            $this->form_validation->set_rules('text', 'Text', 'required');

            if ($this->form_validation->run() === FALSE)
            {
                $this->load->view('templates/header', $data);
                $this->load->view('news/create');
                $this->load->view('templates/footer');

            }
            else
            {
                $var = $this->news_model->set_news();
                $this->load->view('news/SLUG/');
            }
        }

现在,我想弄清楚如何做是使用控制器中的 $slug 变量来加载刚刚发布的文章的 view - 但我不知道如何在数据提交到数据库后访问该变量。

【问题讨论】:

  • 试试return $slug。然后$this->load->view($slug);
  • 如果我返回 slug 那么数据不会发布到数据库 - 因为现在返回触发将数据放入数据库。
  • 为什么不在 Controller 中再次调用 url_title() 呢?
  • $this->db->insert() 其中insert 是在您的模型上执行的函数,您只是返回它的响应。
  • $this->db->insert() 返回 TRUE 或 FALSE,当从 Controller 调用 set_news() 时,您不会检查。所以从模型中返回 Slug 也可以使用。

标签: php codeigniter


【解决方案1】:

你可以试试这个

控制器

public function create()
        {
            $this->load->helper('form');
            $this->load->library('form_validation');

            $data['title'] = 'Create a news item';

            $this->form_validation->set_rules('title', 'Title', 'required');
            $this->form_validation->set_rules('text', 'Text', 'required');

            if ($this->form_validation->run() === FALSE)
            {
                $this->load->view('templates/header', $data);
                $this->load->view('news/create');
                $this->load->view('templates/footer');

            }
            else
            {
                $var['r'] = $this->news_model->set_news();
                $this->load->view('news/SLUG', $var);
            }
        }

model news_model.php

public function set_news()
        {
            $this->load->helper('url');

            $slug = url_title($this->input->post('title'), 'dash', TRUE);

            $data = array(
                'title' => $this->input->post('title'),
                'slug' => $slug,
                'text' => $this->input->post('text')
            );

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

            $id = $this->db->insert_id();

           return $this->db->get_where('news', array('id' => $id))->result();
        }

查看新闻/SLUG.php

<pre>
    <?php var_dump($r);?>
</pre>

【讨论】:

    最近更新 更多