【发布时间】:2014-07-23 12:12:04
【问题描述】:
我正在开发一个客户端网站,其中一部分用于检索新闻,这是我的第一个 codeigniter 应用程序,我遵循了 CI 教程、slugs 和路由。
我遇到的问题是一切正常,但是当基于 slug 获取记录时,我得到 404。我所做的是从我的 URL 中删除 index.php 并对其进行测试,效果很好。
这是我的 route.php
$route['default_controller'] = "welcome";
$route['404_override'] = '';
$route['news/(:any)'] = 'news/singe_news/$1';
$route['news'] = 'news';
这是我的模型 news_model.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class News_model extends CI_Model {
function get_all(){
$sql="SELECT * FROM news AS news";
$query=$this->db->query($sql);
return $query->result();
}
//// get a single post
function get_single($slug = FALSE) {
if ($slug === FALSE)
{
$query = $this->db->get('news');
return $query->result_array();
}
$query = $this->db->get_where('news', array('slug' => $slug));
return $query->row_array();
}
function news_categories(){
$sql="SELECT * FROM news_categories";
$query=$this->db->query($sql);
return $query->result();
}
}
这是我的控制器 news.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class News extends CI_Controller {
public function index()
{
$this->load->model('news_model');
$data['results']=$this->news_model->get_all();
$this->load->view('public/header', $data);
$this->load->view('public/menu');
$this->load->view('public/news-listing', $data);
$this->load->view('public/footer', $data);
}
public function single_news($slug) {
$this->load->model('news_model');
$data['single_news'] = $this->news_model->get_single();
/// if (empty($data['single_news']))
/// {
/// show_404();
///}
$this->load->view('public/header');
$this->load->view('public/menu');
$this->load->view('public/single-news', $data);
$this->load->view('public/footer');
}
}
所以我有问题:
1- $slug 来自哪里?我有一个看法
2- 有什么遗漏吗?
网址必须是
domain.com/news/this-is-a-slug
非常感谢和道歉,如果这可能是在其他帖子上以不同的格式和不同的意图提出的。
【问题讨论】:
-
将
$route['news/(:any)'] = 'news/singe_news/$1';更改为$route['news/(:any)'] = 'news/single_news/$1';
标签: php codeigniter slug