我在代码中做了更改,但它还没有工作 这是controller-submenu.php
class Submenu extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->library('form_validation');
if (!$this->session->userdata('is_admin_login')) {
redirect('admin/home');
}
}
public function index() {
$arr['page'] = 'submenu';
$qry ='Select * from subcategory';
$arr['submenu'] = $this->db->query($qry)->result_array();
//$data['view']='edit';
$this->load->view('admin/vwManageSubmenu',$arr);
}
public function add_submenu()
{
if(isset($_POST['submit']))
{
$name = mysql_real_escape_string($_POST['name']);
$url = $_POST['url'];
$cat = $_POST['category'];
$result = $this->submenu_model->insert_subcategory($name,$url,$cat);
if(isset($result))
{
echo 'insert successfully';
redirect('admin/submenu/');
}
else
{
echo 'insert Failed';
}
}
$arr['page'] = 'submenu';
$data['category'] = $this->submenu_model->get_category();
$this->load->view('admin/vwAddSubmenu',$data);
}
}
这是模型submenu_model.php
class Submenu_model extends CI_Model{
function __construct(){
parent::__construct();
$this->load->database();
}
public function get_category()
{
$query = $this->db->query->("SELECT * FROM category");
$result = $query->result_array();
return $result;
}
function insert_subcategory($name,$url,$cat)
{
$data = array(
'name' => $name,
'url' => $url ,
'idcategory' => $cat
);
$this->db->insert('subcategory', $data);
}
}
这是查看vwAddsubmenu.php
<form method="post" action="<?php echo base_url() ?>admin/submenu/add_submenu">
<input type="text" name="name" value="Sub Category Name">
<input type="text" name="url" value="Sub Category URL">
<select name="category">
<?php
foreach ($category as $item)
{
?>
<option id="<?php echo $item['id'] ?>"><?php echo $item['name'] ?></option>
<?php
}
?>
</select>
<input type="submit" name="submit" value="Add Sub Category">
现在显示错误
遇到PHP错误
严重性:注意
消息:未定义属性:子菜单:: $ submenu_model
文件名:admin / submenu.php
行号:56
致命错误:在第56行的C:\ xampp \ htdocs \ admin \ application \ controllers \ admin \ submenu.php中的非对象上调用成员函数get_category() 如何解决
答案 0 :(得分:0)
在__construct函数上,您必须包含模型:
$this->load->model('model_name');
并在控制器中调用模型函数,如下所示:
$this->model_name->model_function();
答案 1 :(得分:0)
我的声誉不到50,所以我无法发表评论。因此,请不要将我的回复作为您问题的答案。 你为什么这样做: -
$data['category'] = $this->submenu_model->get_category();
您正在传递活动记录以进行查看。这样做你想做什么?为什么要从控制器传递查询到视图。我认为这不是一个正确的方法。
$arr['page'] = 'submenu';
$qry ='Select * from subcategory';
$arr['submenu'] = $this->db->query($qry)->result_array();
//$data['view']='edit';
$this->load->view('admin/vwManageSubmenu',$arr);
如果您在视图中需要某些数据库信息,最好直接在视图中编写查询。 如果您使用的是CI 3.X,那么控制器文件的名称应该类似于&#34; Submenu.php&#34;首都的第一封信。