访问错误,但视图和控制器及方法都存在
我将我的代码更新到万网的虚拟主机中,目录结构和本地一致。我在route.php中配置的默认控制器是Welcome,整个这个控制器中的方法对应的视图都可访问。但在登录方法(login)中进行验证登录成功后的跳转确提示:
An Error Was Encountered
Unable to load the requested file: Admin/ancestral.php
login方法对应的视图,验证的控制器为User中的login方法,具体代码如下:
$this->load->helper('url');
$this->load->helper('form');
$this->load->library('form_validation');
$this->form_validation->set_rules('email', 'Email', 'required');
$this->form_validation->set_rules('pwd', 'Password', 'required');
$data['email'] = $this->input->post('email');
$data['pwd'] = $this->input->post('pwd');
if ($this->form_validation->run() === FALSE)
{
$this->load->helper('url');
$this->load->view('templates/header');
$this->load->view('login');
$this->load->view('templates/footer');
}
else
{
$data['user'] = $this->User_model->check_login($data);
if (empty($data['user']))
{
$data['type'] = '登录失败';
$data['info'] = '账号或密码错误';
$this->load->view('templates/header');
$this->load->view('login_failure',$data);
$this->load->view('templates/footer');
}
else{
//设置session
$sessiondata = array(
'name'=> $data['user']['user_name'],
'email' => $data['user']['user_email'],
'phone' => $data['user']['user_phone'],
'logged_in' => TRUE
);
$this->session->set_userdata($sessiondata);
redirect('Admin'); // 預設讀取 index 方法
}
}
登录验证后,便出现上面的错误提示,没有找到Admin/index.php
而我在控制器中有一个叫Admin的,视图中的一个admin/index.php文件,为何会提示找不到,加载不了呢?是什么原因,求教。
Admin控制器中的index方法代码如下:
public function index($page = 'index')
{
if ( ! file_exists(APPPATH.'/views/admin/'.$page.'.php'))
{
// Whoops, we don't have a page for that!
show_404();
}
$data['title'] = ucfirst($page); // Capitalize the first letter
if(empty($this->session->userdata('name')))
{
$this->load->view('templates/header');
$this->load->view('welcome_message');
$this->load->view('templates/footer');
}
else
{
$this->load->view('templates/header_admin',$data);
$this->load->view('Admin/index');
$this->load->view('templates/footer_admin');
}
}
本帖最后由 developerm 于 2016-1-22 17:44 编辑
Closer 发表于 2016-1-22 17:34
你的 index.php 有放入下列代碼嗎 ?
你是说Admin控制器中吗?如果是,则有放这段代码的
你看是否是index方法有问题?
<?php
class Admin extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->helper('url');
$this->load->helper('url_helper');
$this->load->library('session');//加载session类
}
public function index($page = 'index')
{
if ( ! file_exists(APPPATH.'/views/admin/'.$page.'.php'))
{
// Whoops, we don't have a page for that!
show_404();
}
$data['title'] = ucfirst($page); // Capitalize the first letter
if(empty($this->session->userdata('name')))
{
$this->load->view('templates/header');
$this->load->view('welcome_message');
$this->load->view('templates/footer');
}
else
{
$this->load->view('templates/header_admin',$data);
$this->load->view('Admin/index');
$this->load->view('templates/footer_admin');
}
}
本帖最后由 developerm 于 2016-1-22 22:48 编辑
我刚把整个Admin的控制器代码注释掉,只留下以下代码:
<?php
class Admin extends CI_Controller {
public function __construct()
{
parent::__construct();
$this->load->helper('url');
$this->load->helper('url_helper');
$this->load->library('session');//加载session类
}
public function index()
{
$this->load->view('templates/header_admin',$data);
$this->load->view('Admin/index');
$this->load->view('templates/footer_admin');
}
}
此时会提示以下错误:
A PHP Error was encountered
Severity: Notice
Message: Undefined variable: data
Filename: controllers/Admin.php
Line Number: 13
Backtrace:
直接访问(http://www.xx.cn/Admin/index)控制器加方法也一样的提示
當你前往 Admin 時
應該不會自動導向 index.php
所以你還要另外在 route.php 內設定
或是直接給它完整路徑
redirect('Admin/index'); 能否提供 route.php 的代碼? 本帖最后由 developerm 于 2016-1-22 15:32 编辑
Closer 发表于 2016-1-22 15:20
能否提供 route.php 的代碼?
defined('BASEPATH') OR exit('No direct script access allowed');
$route['default_controller'] = 'welcome';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
其他的都是注释掉的
环境是php5.5,ci是3.2
本帖最后由 Closer 于 2016-1-22 15:41 编辑
我本來懷疑你 route 有重新定位路徑
但實際上又沒改
因為你的
An Error Was Encountered
Unable to load the requested file: Admin/ancestral.php
是說找不到 Admin 底下的 ancestral.php 檔
你 login 成功登入後
導向的網址是 ?
另外可以試試看 redirect('Admin/index'); 或 redirect( site_url('Admin/index') );
static/image/hrline/line3.png
$this->load->helper('url'); 多載入了一次
本帖最后由 developerm 于 2016-1-22 15:59 编辑
Closer 发表于 2016-1-22 15:39
我本來懷疑你 route 有重新定位路徑
但實際上又沒改
登录后,我想进入的就是Admin控制器的index方法对应的admin/index.php页
我设置
redirect('Admin/index');
redirect(site_url('Admin/index'));
这样都不可以,还是一样的提示
多加载的那句已删除掉
本帖最后由 Closer 于 2016-1-22 16:03 编辑
developerm 发表于 2016-1-22 15:55
登录后,我想进入的就是Admin控制器的index方法对应的admin/index.php页
我设置
redirect('Admin/index'); ...
我是問說提供你上方的網址列
看是導向哪裡去
另外
錯誤訊息還是一樣這個 ?
An Error Was Encountered
Unable to load the requested file: Admin/ancestral.php
不太可能直接跟你說找不到 ancestral.php
肯定是你哪邊試圖想載入它
Closer 发表于 2016-1-22 16:02
我是問說提供你上方的網址列
看是導向哪裡去
你是说我具体的网址吗?
index是我在login登录验证成功后要跳转的地方。这里会出现Unable to load the requested file: Admin/index.php
ancestral是我直接访问的一个测试,直接访问时会出现Unable to load the requested file: Admin/ancestral.php