Php Can';t在codeigniter上加载特定页面“;“鼻涕虫”;
我正在尝试在控制器中加载特定页面。我遵循了Codeigniter教程,主页正常工作,但是单个页面(加载了视图)没有按照给定的slug加载 blog.phpPhp Can';t在codeigniter上加载特定页面“;“鼻涕虫”;,php,codeigniter,codeigniter-3,Php,Codeigniter,Codeigniter 3,我正在尝试在控制器中加载特定页面。我遵循了Codeigniter教程,主页正常工作,但是单个页面(加载了视图)没有按照给定的slug加载 blog.php <?php defined('BASEPATH') OR exit('No direct script access allowed'); class Blog extends CI_Controller { /** * Index Page for this controller. * * Maps to the follo
<?php
defined('BASEPATH') OR exit('No direct script access allowed');
class Blog extends CI_Controller {
/**
* Index Page for this controller.
*
* Maps to the following URL
* http://example.com/index.php/index
* - or -
* http://example.com/index.php/Index/index
* - or -
*/
function __construct()
{
parent::__construct();
$this->load->model('blog_model');
$this->load->helper('url_helper');
}
public function index()
{
$data['post'] = $this->blog_model->get_posts();
$data['title'] = 'Blog archive';
$this->load->view('header', $data);
$this->load->view('blog', $data);
$this->load->view('footer', $data);
}
public function view($slug = NULL)
{
$data['post'] = $this->blog_model->get_posts($slug);
if (empty($data['post']))
{
show_404();
}
$data['title'] = $data['post']['title'];
$this->load->view('header', $data);
$this->load->view('post', $data);
$this->load->view('footer', $data);
}
}
<?php
class Blog_model extends CI_Model {
public function __construct()
{
$this->load->database();
}
public function get_posts($slug = FALSE)
{
if ($slug === FALSE)
{
$this->db->select('*');
$this->db->from('blog_posts');
$this->db->join('category', 'category.id = blog_posts.category_id');
$this->db->join('author', 'author.id = blog_posts.author_id');
$query = $this->db->get();
return $query->result_array();
}
$this->db->select('*');
// $this->db->from('blog_posts');
$this->db->join('category', 'category.id = blog_posts.category_id');
$this->db->join('author', 'author.id = blog_posts.author_id');
// $this->db->where('slug', $slug);
$query = $this->db->get_where('blog_posts', array('slug' => $slug));
return $query->row_array();
}
}
最后我通过修改路由解决了这个问题:
起初我有:
$route['default_controller'] = 'Index';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
$route['blog'] = 'blog';
$route['blog/(:any)'] = 'blog/$1';
所以我把它改成:
$route['default_controller'] = 'Index';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
$route['blog'] = 'blog';
$route['blog/(:any)'] = 'blog/view/$1';
并将blog.php中的方法名称从blog更改为view。“查看”看起来比“博客”更标准,所以我就这样离开了。在'blog/view/$1'中,表示控制器,查看方法,当然$1是第一个参数。实际上,如果我尝试Blog/view/hello world,它也会起作用。像这样试试
$route['blog/view/(:any)'] = 'blog/view/$1';
$route['view/(:any)'] = 'blog/view/$1';
在\uu构造中调用url\u助手
helper,如下所示
$this->load->helper('url');
现在,更新routes.php,如下所示
$this->load->helper('url');
如果你的URL喜欢
你的ruote应该是这样的
$route['blog/view/(:any)'] = 'blog/view/$1';
$route['view/(:any)'] = 'blog/view/$1';
如果你的URL喜欢
你的ruote应该是这样的
$route['blog/view/(:any)'] = 'blog/view/$1';
$route['view/(:any)'] = 'blog/view/$1';
而且,您的get_posts
模型函数重复查询,只需像下面那样使用它
public function get_posts($slug = FALSE){
$this->db->select('*');
$this->db->from('blog_posts');
$this->db->join('category', 'category.id = blog_posts.category_id');
$this->db->join('author', 'author.id = blog_posts.author_id');
if($slug){
$this->db->where(compact('slug'));
}
$query = $this->db->get();
return ($query->num_rows() > 1) ? $query->result_array() : $query->row_array();
}
我应该在那里写什么?还是我应该把它留白?现在它很好用。