我刚刚开始学习CodeIgniter,并在下面的例子中遇到了麻烦: 我的控制器:
class Site extends CI_Controller { public function __construct() {我的模型是:
parent::__construct(); } function index() { $this->load->view('options_view'); } function create() { $data = array ( 'title' => $this->load->input->post('title'), 'content' => $this->load->input->post('content') ); $this->site_model->add_record($data); $this->index(); } }
class Site_model extends CI_Model { function get_records() { $q = $this->db->get('articles'); return $q->result(); } function add_record($data) { $this->db->insert('articles',$data); return; } }
我的观点是:
<pre>
<?php echo form_open('site/create');?>
<p>
<label for="title">Title:</label>
<input type="text" name="title" id="title"/>
</p>
<p>
<label for="content">Content:</label>
<input type="text" name="content" id="content"/>
</p>
<p>
<input type="submit" value="Submit"/>
</p>
<?php echo form_close();?>
</pre>
所以当我点击提交按钮时,我得到的错误如下:
Severity: Notice
Message: Undefined property: CI_Loader::$input
Filename: controllers/site.php
Line Number: 19
任何想法都会有用!Thanx !!
答案 0 :(得分:3)
在您的控制器中尝试此操作。
class Site extends CI_Controller
{
public function __construct()
{
parent::__construct();
}
function index()
{
$this->load->view('options_view');
}
function create()
{
$data = array (
'title' => $this->input->post('title'),
'content' => $this->input->post('content')
);
$this->site_model->add_record($data);
$this->index();
}
}
不需要在函数create中的input语句前面使用load。 试试吧..
答案 1 :(得分:0)
这些行应该像
'title' => $this->input->post('title'),
'content' => $this->input->post('content')
不
'title' => $this->load->input->post('title'),
'content' => $this->load->input->post('content')
并且还需要在parent :: __ construct()之后加载表单helper.so;添加此行,或者您可以添加autoload.php页面
$this->load->helper('form');
如果您遇到任何问题,请告诉我。