zoukankan      html  css  js  c++  java
  • thinkPHP URL访问

    ThinkPHP采用单一入口模式访问应用,对应用的所有请求都定向到应用的入口文件,系统会从URL参数中解析当前请求的模块、控制器和操作,下面是一个标准的URL访问格式:

    http://domainName/index.php/模块/控制器/操作
    

    其中index.php就称之为应用的入口文件(注意入口文件可以被隐藏,后面会提到)。

    提示:


    模块在ThinkPHP中的概念其实就是应用目录下面的子目录,而官方的规范是目录名小写,因此模块全部采用小写命名,无论URL是否开启大小写转换,模块名都会强制小写。

    应用的index模块的Index控制器定义如下:

    <?php
    
    namespace appindexcontroller;
    
    class Index
    {
        public function index()
        {
            return 'index';
        }
    
        public function hello($name = 'World')
        {
            return 'Hello,' . $name . '!';
        }
    }
    

    如果我们直接访问入口文件的话,由于URL中没有模块、控制器和操作,因此系统会访问默认模块(index)下面的默认控制器(Index)的默认操作(index),因此下面的访问是等效的:

    http://tp5.com/index.php
    http://tp5.com/index.php/index/index/index
    

    如果要访问控制器的hello方法,则需要使用完整的URL地址

    http://tp5.com/index.php/index/index/hello/name/thinkphp
    

    访问URL地址后页面输出结果为:

    Hello,thinkphp!
    

    由于name参数为可选参数,因此也可以使用

    http://tp5.com/index.php/index/index/hello
    

    访问URL地址后页面输出结果为:

    Hello,World!
    

    默认情况下,URL地址中的控制器和操作名是不区分大小写的,因此下面的访问其实是等效的:

    http://tp5.com/index.php/index/Index/Index
    http://tp5.com/index.php/index/INDEX/INDEX
    

    如果你的控制器是驼峰的,例如定义一个HelloWorld控制器(application/index/controller/HelloWorld.php):

    <?php
    namespace appindexcontroller;
    
    class HelloWorld
    {
        public function index($name = 'World')
        {
            return 'Hello,' . $name . '!';
        }
    }
    

    正确的URL访问地址(该地址可以使用url方法生成)应该是:

    http://tp5.com/index.php/index/hello_world/index
    

    系统会自动定位到HelloWorld控制器类去操作。

    如果使用

    http://tp5.com/index.php/index/HelloWorld/index
    

    将会报错,并提示Helloworld控制器类不存在。

    如果希望严格区分大小写访问(这样就可以支持驼峰法进行控制器访问),可以在应用配置文件中设置:

    // 关闭URL自动转换(支持驼峰访问控制器)
    'url_convert' => false,
    

    关闭URL自动转换之后,必须使用下面的URL地址访问(控制器名称必须严格使用控制器类的名称,不包含控制器后缀):

    http://tp5.com/index.php/index/Index/index
    http://tp5.com/index.php/index/HelloWorld/index
    

    提示:


    操作方法的访问本身不会受URL自动转换的影响,但会影响默认的模板渲染输出。

    如果你的服务器环境不支持pathinfo方式的URL访问,可以使用兼容方式,例如:

    http://tp5.com/index.php?s=/index/Index/index
    

    其中变量s的名称的可以配置的。

    5.0不再支持普通的URL访问方式,所以下面的访问是无效的,你会发现无论输入什么,访问的都是默认的控制器和操作^_^

    http://tp5.com/index.php?m=index&c=Index&a=hello
  • 相关阅读:
    XML错误信息Referenced file contains errors (http://www.springframework.org/schema/beans/spring-beans-4.0.xsd). For more information, right click on the message in the Problems View ...
    Description Resource Path Location Type Cannot change version of project facet Dynamic Web Module to 2.3.
    maven创建web报错Cannot read lifecycle mapping metadata for artifact org.apache.maven.plugins:maven-compiler-plugin:maven-compiler-plugin:3.5.1:runtime Cause: error in opening zip file
    AJAX跨域
    JavaWeb学习总结(转载)
    JDBC学习笔记
    Java动态代理之JDK实现和CGlib实现
    (转)看懂UML类图
    spring boot配置使用fastjson
    python3下django连接mysql数据库
  • 原文地址:https://www.cnblogs.com/xu1115/p/10977601.html
Copyright © 2011-2022 走看看