【ThinkPHP框架教程·Part-05】控制器定义和渲染输出


本章节我们来了解一下控制器定义的方式,包括 URL 访问和渲染输出。

一、控制器定义

控制器,即 controller,控制器文件存放在 controller 目录下。

1、控制器目录设置

如果想改变系统默认的控制器文件目录,可以在 config 下 route.php 配置:
image.png

2、控制器访问格式

类名和文件名大小写保持一致,并采用驼峰式(首字母大写);

namespace app\controller; 

class Test {
} 

从上面两段代码得知 Test.php 的实际位置为:app\controller\Test.php

在 Test 类创建两个方法 index(默认)和 hello,访问 URL 如下:

http://localhost:8000/test
http://localhost:8000/test/hello

那么如果创建的是双字母组合,比如 class HelloWorld
image.png

访问 URL 如下:

http://localhost:8000/helloworld
http://localhost:8000/hello_world

image.png


image.png

3、设置控制器后缀(选择性开启)

如果你想避免引入同类名时的冲突,可以 route.php 设置控制器后缀: ‘controller_suffix’ => true,
image.png

此时,为了防止重名,所有控制器后面都必须加上Controller后缀。Test.php类名就必须改成 TestController.php。


二、渲染输出

ThinkPHP 直接采用方法内 return 返回的方式直接就可以向页面输出了。

1、return返回字符串

假设我们定义一个方法想要使用return返回一个数组:

<?php

namespace app\controller;

class Test
{
    public function arrayOutput()
    {
        $data = ['a' => 1, 'b' => 2, 'c' => 3];
        return $data;
    }
}

访问后,发现不支持直接输出数组类型。
image.png

2、返回json格式

这里可以使用采用json()函数,封装成json的格式输出:

$data = array('a' => 1, 'b' => 2, 'c' => 3); 
return json($data); 

此时就可以以json的格式输出到页面。
image.png

3、扩展:助手函数 halt()

另外,变量调试时,不推荐使用 die、exit 等 PHP 方法中断代码执行,推荐助手函数 halt();

<?php

namespace app\controller;

class Test
{
    public function arrayOutput()
    {
        $data = ['a' => 1, 'b' => 2, 'c' => 3];
        halt('中断测试');
        return json($data);
    }
}

image.png


  • 25
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
thinkphp Access-Control-Allow-Origin 报错是由于跨域访问时没有正确设置 Access-Control-Allow-Origin 头部字段引起的。在给定的 PHP 代码中,Access-Control-Allow-Origin 被设置为绑定 `$origin_arr` 数组内的域名。 根据给定的代码片段,Access-Control-Allow-Origin 的值是根据请求中的 Origin 头部字段判断的。如果 Origin 头部字段的值在 `$origin_arr` 数组中,则允许跨域访问并将 Access-Control-Allow-Origin 设置为该值。 然而,需要注意的是,在引用中提到的 Access-Control-Allow-Origin 一般情况下只能绑定一个值。但是,根据给定的代码,通过在 `$origin_arr` 数组中添加多个域名,可以实现绑定多个值的效果。这是因为在代码中使用了 in_array() 函数来检查是否存在匹配的域名。 因此,如果 thinkphp Access-Control-Allow-Origin 报错,可能有以下几个原因导致: 1. `$origin_arr` 数组中的域名没有匹配到请求中的 Origin 头部字段的值。 2. `$origin_arr` 数组中的域名格式不正确,或者存在拼写错误。 3. 请求中没有包含 Origin 头部字段。 为了解决这个问题,你可以按照以下步骤进行排查和修复: 1. 确保 `$origin_arr` 数组中包含与请求中的 Origin 头部字段值匹配的域名,且格式正确。 2. 检查请求中是否包含 Origin 头部字段,并确保该头部字段的值与预期的域名匹配。 3. 如果你使用的是 thinkphp 框架,可以在应用的配置文件中设置 Access-Control-Allow-Origin 头部字段的值。例如,可以在 config.php 文件中添加以下代码: ```php 'header' => [ 'Access-Control-Allow-Origin' => implode(',', self::$origin_arr), 'Access-Control-Allow-Methods' => 'POST, GET', 'Access-Control-Allow-Credentials' => true, 'Access-Control-Allow-Headers' => 'token, Content-Type, Authorization, Accept, Range, Origin, Token, language', ], ``` 这样可以确保在每个请求中都正确设置了相应的头部字段。 综上所述,如果 thinkphp Access-Control-Allow-Origin 报错,你可以检查以上提到的原因并进行相应的修复。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值