Interceptar o controlador de pedido inválido ou o 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:
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:
Método 2. Configurar .env
variá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 env
arquivo de amostra oficial . Você pode copiá-lo e renomeá-lo como um .env
arquivo. 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 = true
o 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.
注意:这种模式是开发阶段才能打开的,线上模式是不能打开的,因为会暴露详细的文件和信息流程,非常不安全。
Modo online, definimos APP_DEBUG = false
, desta vez retornará à página de erro anterior:
Três, lidar com erros
1. Método não existe
BaseController
Defina o __call
método no controlador . Se o controlador acessado herdar o BaseController
controlador e o método não for encontrado, ele entrará neste __call
mé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
2. O controlador não existe
Ao acessar um controlador que não existe, o seguinte erro também é exibido:
Solução, app\controller
crie um novo Error
controlador 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: