在我的routes.php文件的文件我已经添加了路由下面的代码:如何在数据库中设置codeigniter中的动态路由?
$route['report/:num'] = "home/reportcard/$1";
这里是我的控制器代码:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Home extends CI_Controller
{
function __construct() {
parent::__construct();
if(empty($this->session->userdata('id_user'))){
$this->session->set_flashdata('flash_data', 'You cannot access');
redirect('login');
}
}
public function index(){
$this->load->model("item_model");
$data['records'] = $this->item_model->getAllItems();
$this->load->view('home',$data);
}
function reportcard($id){
$this->load->model("item_model");
$data['report'] = $this->item_model->getReport($id);
$this->load->view('report', $data);
}
function logout(){
$data=['id_user','username'];
$this->session->unset_userdata($data);
redirect('login');
}
}
这里是我的模型代码:
<?php
class Item_model extends CI_Model
{
function getAllItems()
{
$this->load->database();
$q = $this->db->get("item");
if($q->num_rows() > 0)
{
return $q->result();
}
return array();
}
public function getReport($id){
$this->db->select('*');
$this->db->from('item');
$this->db->where('item.id', $id);
$query = $this->db->get();
if($query->num_rows() > 0)
return $data->result();
}
}
?>
这是观点的代码。我只是打印数组中的我report_view用于测试目的:
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
print_r($report);
?>
这是我home_view代码:
<div class="row">
<ul class="home-grid">
<?php foreach ($query->result() as $row): ?>
<li>
<a href="<?php echo base_url() ?>report/<?=$row->item ?>/<?=$row->id ?>" class="btn btn-lg btn-warning view-report"><span class="glyphicon glyphicon-list-alt"></span> <br/>
<?=$row->item ?><br/>
<small>Click here for see report</small>
</a>
</li>
<?php endforeach; ?>
</ul>
我已经试过多次来查看阵列。但未能获得数组。我如何加载视图?当我从家中点击我的物品时,它会创建一个网址,如http://localhost/super_shop_register/report/1
但是没有显示任何数据。显示“找不到对象!”。这里是我的看法形象: 点击后,它会显示如下:
我该如何解决这个问题?
super_shop_register是你的base_url的一部分吗?在你发布的视图代码中,它看起来应该是report /,$ row-> item和$ row-> id之后的两个参数,为什么只有id出现? – Pacio
我认为它与另一条路线相匹配,你可以发布你的完整路线 –
base_url是好的。当我拍摄快照时,代码只有$ row-id。这就是为什么在url中只显示id。这根本不是什么大问题。 $ config ['base_url'] ='http:// localhost/super_shop_register'; –