Php 即使已调用控制器,也未触发CodeIgniter索引功能
简而言之:下面的代码示例不回显“我在这里!”它不会从_构造函数回显。如果我将echo语句移到类上方,它将进行回显,这样我就知道CI正在到达该控制器 背景故事: 我继承了一个在CodeIgniter 2.1.2中完成的项目。我应该将一个应用程序复制到另一个具有不同子域的目录,并将数据库配置指向不同的数据库。我在配置中更新了数据库。我已经更新了基本浴室。我已将环境设置为“开发”,以便获取错误消息。没有错误Php 即使已调用控制器,也未触发CodeIgniter索引功能,php,codeigniter,codeigniter-2,Php,Codeigniter,Codeigniter 2,简而言之:下面的代码示例不回显“我在这里!”它不会从_构造函数回显。如果我将echo语句移到类上方,它将进行回显,这样我就知道CI正在到达该控制器 背景故事: 我继承了一个在CodeIgniter 2.1.2中完成的项目。我应该将一个应用程序复制到另一个具有不同子域的目录,并将数据库配置指向不同的数据库。我在配置中更新了数据库。我已经更新了基本浴室。我已将环境设置为“开发”,以便获取错误消息。没有错误 if(!defined('BASEPATH')) 退出(“不允许直接脚本访问”); 如果(!i
if(!defined('BASEPATH'))
退出(“不允许直接脚本访问”);
如果(!ini_get('date.timezone')){
日期\默认\时区\设置(“我的时区”);
}
类登录扩展CI_控制器{
公共函数构造(){
父项::_构造();
$this->load->model('mod_login');
$this->load->helper('date');
}
函数索引(){
回声“我在这里!”//没有回声
}
功能注销{
//这里有注销功能。
}
}
这里的任何CodeIgniter粉丝都知道为什么?控制器的类名必须是大写。从文件: 注意:类名必须以大写字母开头 换句话说,这是有效的:
<?php
class Blog extends CI_Controller {
}
?>
这是无效的:
<?php
class blog extends CI_Controller {
}
?>
更多信息:您的控制器应该是这样的
<?php
if (!defined('BASEPATH'))
exit('No direct script access allowed');
class Login extends CI_Controller
{
function __construct()
{
parent::__construct();
$this->load->model('mod_login');
$this->load->helper('date');
}
public function index()
{
echo "Here I am!";
}
}
额外说明:(删除URL中的index.php
)
在config/config.php中
$route['default_controller'] = "login";/set default conntoller
$config['base_url'] = '';
$config['index_page'] = '';
和.htaccess
(放在应用程序文件夹外)
重新启动发动机
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则^(.*)$index.php/$1[L]
谢谢。它没有改变或修复任何东西,但我不想让坏表单永久化。这是您控制器的完整代码吗?下面还有其他函数,但没有被调用。此外,我没有包括CI_控制器,因为它是标准的codeigniter,我没有修改它。这个控制器在原始应用程序的原始文件夹中工作正常,我以前在添加函数时没有遇到过问题。逐行调试可能是您可能会遇到问题,如签入类回显一些事情,如果可以,然后在构造函数之后等等。我不确定,但可能是您的模型或助手未加载。或者在没有加载模型和助手的情况下尝试,它是否会转到索引函数。您编写了cho而不是echo。是的。不走运。再说一次,需要说明的是,它到达了这个控制器,CI正在加载login.php,因为如果我把它放在类声明之上,就会显示echo“Here I am”。我已经完成了.htaccess,就像你展示的一样。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>