我正在使用website.com/profile/nameofuser
之类的东西。
但是,如果我有website.com/profile/_nameofuser
,我会得到404 error
,而website.com/profile/nameofuser_
或website.com/profile/nameof_user
也在工作。这与可接受的字符无关,但是出了什么问题?
class Profile extends CI_Controller {
public function __construct()
{
parent:: __construct();
$this->load->model('Profile_model');
$this->load->helper(array('url', 'form', 'htmlpurifier'));
}
public function index() {
$this->load->library('form_validation');
if(getUserData($this->uri->segment(2), "ID") < 0) {
$this->session->set_flashdata('error', 'Profil inexistent.');
redirect(base_url());
}
if (!is_cache_valid(md5('profile' . $this->uri->segment(2) . ''), 300)){
$this->db->cache_delete('profile', $this->uri->segment(2));
}
if(getUserData($this->uri->segment(2), "ID") > 0) {
/* some mysql queries.. */
}
$data["main_content"] = 'profile/profile_view';
$this->load->view('includes/template.php', $data);
} else {
$this->session->set_flashdata('error', 'Profil inexistent.');
redirect(base_url());
}
}
function _remap($method,$args)
{
if (method_exists($this, $method))
{
$this->$method($args);
}
else
{
$this->index($method,$args);
}
}
}
这是我的个人资料控制器。我真的不知道出什么问题了。如果我输入了无效的配置文件,则会重定向并返回错误的flashdata,这样就可以了。也许是重映射问题?
答案 0 :(得分:0)
1)检查视图文件中的fie格式..如果它是html文件,这意味着您不能不使用其格式来调用它 例如 如果您的文件是php格式,请命名为home-view.php 您可以将其称为
$this->load->view('home-view');
但如果它是html文件,则名称在home-view.html中 因此,您必须将其扩展名为
$this->load->view('home-view.html');
答案 1 :(得分:0)
您对/profile/nameofuser
的呼叫缺少MVC体系结构的基本要求。
您需要调用控制器/方法组合(在CI中,您的基本网址是domain.com/controller/method)...
由于在个人档案控制器中没有针对每个用户的特定方法,这实际上是一件好事,因此您需要在控制器中处理您的用户的方法。您已经拥有它,它名为index
如果将URL指向/profile/index/nameofuser
并将$this->uri->segment(2)
更改为$this->uri->segment(3)
,则应该可以使用它
尝试一下,让我知道