无法将值传递给控制器​​函数codeigniter

时间:2016-09-11 05:59:36

标签: php codeigniter codeigniter-2 codeigniter-3

这是我的控制器代码

 public function create($postdate)
    {
        $this->load->helper('form');
        $this->load->library('form_validation');
        $this->load->helper('url');
      //  $postdate = $this->uri->segment(3);
        echo $postdate;



        $data['title'] = 'Hey there!';


        $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('pages/create',);
            $this->load->view('templates/footer');

        }
        else
        {   
            $this->news_model->set_news($postdate = 20160824);
            $this->load->view('pages/success');
        }
}

这是我的模型代码:

public function set_news($postdate)
{
$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'),
    'room_date' => $postdate

);

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

但模型没有将值$ postdate插入数据库。它插入的默认值为20160824,其中控制器中的echo显示作为参数传递的值,即。我希望在数据库中插入的(正确)值。

2 个答案:

答案 0 :(得分:4)

您不在函数调用中给出默认值。而是在函数的定义中提供默认值。

SanketR已正确回答了您的问题。我想说清楚。

在你的控制器中:

您正在将$postdate的值更改为20160824。这不是预期的行为。 改变这个:

$this->news_model->set_news($postdate = 20160824);

$this->news_model->set_news($postdate);

在您的模型中,将函数头更改为:

public function set_news($postdate = 20160824)

如果控制器中的函数调用中未提供该变量,则会为$postdate设置默认值。

答案 1 :(得分:0)

你做错了。正确的方法是

public function set_news($postdate = 20160824)
{
$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'),
    'room_date' => $postdate

);

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

在您的控制器中

$this->news_model->set_news($postdate);