Heim  >  Artikel  >  Backend-Entwicklung  >  thinkphp 3.2 只能使用默认的控制器与操作方法

thinkphp 3.2 只能使用默认的控制器与操作方法

WBOY
WBOYOriginal
2016-06-23 13:45:492231Durchsuche

事情是这样的,我不能建立自己的控制器,只能使用默认的 /Home/Controller/IndexController/Index/index 方法下的逻辑。

意思就是说即使我在 /Home/Controller/IndexController/Index/hello 访问,依然不生效,以下是代码:



namespace Home\Controller;
use Think\Controller;
class IndexController extends Controller {
    public function index(){
        $this->show('

 

:)

欢迎使用 ThinkPHP


[ 您现在访问的是Home模块的Index控制器 ]
<script></script>','utf-8');
    }
    
    public function hello(){
echo 'hello';
}
}



不过我修改了惯例配置里面的 默认模块 / 默认控制器 / 默认操作,改成自己的控制器与操作,这样是可以使用自己的控制器的,那就是我只能使用一个控制器了!?求各位php大神指教!是我的配置环境有问题吗?

我的controller名字等没有写错,我下载了别人声称能运行的代码,到我这边就不可以了!
我用的是thinkphp 3.2 版本


回复讨论(解决方案)

最近在用3.1.3 没遇到你的情况  定义自己的控制器 只要继承框架的Action 应该不会有问题的  楼主在仔细看下 自己安装到使用 有没配置过什么特殊的操作

3.2版本开始就没有action了,用controller代替~~~我没有改了什么配置啊,莫名其妙

看上去你什么也没动
那么访问应是
http://localhost/home/index/index
http://localhost/home/index/hello

看上去你什么也没动
那么访问应是
http://localhost/home/index/index
http://localhost/home/index/hello


是的,我也原来这样以为,实际上两个URL的访问结果都一样,都是http://localhost/home/index/index,这是我迷惑的地方。
我尝试了,如果在惯例配置文件里配置了,是可以使用http://localhost/home/index/hello的。另外,在入口文件index.php中也可以通过常量的设置BIND_MODULE BIND_CONTROLLER  BIND_ACTION指定的默认模块 控制器 操作

可惜,我就是用不到自己的控制器,自己的操作,好晕啊!!!望各大神帮忙!

终于还是自己解决了问题,看了ThinkPHP里面的源代码,发现用 http://localhost:9999/index.php?c=Read&a=index 这样的URL是能正常访问我自己的控制器和操作的,那问题就在于我的thinkphp不支持PATHINFO方式了!

为什么偏偏我的不支持呢?再看3.2的开发手册,原来是低版本的nginx不支持,如何解决参考以下文章
http://www.smzdy.com/nginx-kai-qi-pathinfo-di-ling-yi-zhong-xie-fa-yi-jing-yong.html

by the way,我的nginx 版本是1.1.19,的确有点旧了!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn