Operações básicas do projeto ThinkPHP6 (4. Interceptar controlador de solicitação inválido ou método não existe)

1. Solicitação inválida padrão

Ao acessar um controlador ou método que não existe, a seguinte página é exibida por padrão:
Insira a descrição da imagem aqui

Dois, exibir mensagens de erro específicas

Método 1. Configuraçãoconfig/app.php

Se você deseja ver mensagens de erro específicas, você pode configurarconfig/app.php

'show_error_msg'   => true

Exibir mensagem de erro específica após a configuração:
Insira a descrição da imagem aqui

Método 2. Configurar .envvariáveis ​​de ambiente

Restaure a configuração do método 1; em seguida, observe o arquivo no diretório raiz do projeto .example.env. Este é um envarquivo de amostra oficial . Você pode copiá-lo e renomeá-lo como um .envarquivo. O conteúdo do arquivo padrão é o seguinte:

APP_DEBUG = true

[APP]
DEFAULT_TIMEZONE = Asia/Shanghai

[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1
DATABASE = test
USERNAME = username
PASSWORD = password
HOSTPORT = 3306
CHARSET = utf8
DEBUG = true

[LANG]
default_lang = zh-cn

Você pode ver que APP_DEBUG = trueo modo de depuração está ativado por padrão na primeira linha . Neste momento, visite o endereço agora e você pode ver um relatório de erro muito detalhado.

注意:这种模式是开发阶段才能打开的,线上模式是不能打开的,因为会暴露详细的文件和信息流程,非常不安全。

Insira a descrição da imagem aqui
Modo online, definimos APP_DEBUG = false, desta vez retornará à página de erro anterior:
Insira a descrição da imagem aqui

Três, lidar com erros

1. Método não existe

BaseControllerDefina o __callmétodo no controlador . Se o controlador acessado herdar o BaseControllercontrolador e o método não for encontrado, ele entrará neste __callmétodo. Deve-se notar que o método de acesso pode ser dados json em formato API, ou pode ser uma página de retorno. dados da API:

public function __call($name, $arguments)
{
    
    
    // 如果是API模块,需要输出API的数据格式(一般是json)
    // 如果是模板引擎的方式,需要输出自定义错误页面
    $result = [
        'status' => 0,
        'message' => '找不到该方法',
        'result' => null
    ];
    return json($result, 400);
}

Quando acessamos um método que não existe:

A figura a seguir mostra o formato de dados json formatado, porque o navegador instalou o plug-in JSONView

Insira a descrição da imagem aqui

2. O controlador não existe

Ao acessar um controlador que não existe, o seguinte erro também é exibido:
Insira a descrição da imagem aqui
Solução, app\controllercrie um novo Errorcontrolador no diretório (名字固定为Error):

<?php

namespace app\controller;

class Error
{
    
    
    public function __call($name, $arguments)
    {
    
    
        $result = [
            'status' => 0,
            'message' => '找不到该控制器',
            'result' => null
        ];
        return json($result, 400);
    }
}

Em seguida, visite o controlador inexistente:
Insira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/zy1281539626/article/details/110307960
Recomendado
Clasificación