ThinkPHP6 프로젝트 기본 작업 (4. 인터셉트 유효하지 않은 요청 컨트롤러 또는 방법이 존재하지 않음)

1. 기본 유효하지 않은 요청

존재하지 않는 컨트롤러 또는 메소드에 액세스하면 기본적으로 다음 페이지가 표시됩니다.
여기에 사진 설명 삽입

둘째, 특정 오류 메시지 표시

방법 1. 구성config/app.php

특정 오류 메시지를 보려면 다음을 구성 할 수 있습니다.config/app.php

'show_error_msg'   => true

구성 후 특정 오류 메시지 표시 :
여기에 사진 설명 삽입

방법 2. .env환경 변수 구성

방법 1의 구성을 복원 한 다음 프로젝트의 루트 디렉토리에있는 파일을 확인합니다 .example.env.이 env파일 은 공식 샘플 파일입니다. 파일을 복사하여 이름을 바꿀 수 있습니다 .env. 기본 파일 내용은 다음과 같습니다.

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

첫 번째 줄 APP_DEBUG = true에서 디버그 모드가 기본적으로 켜져 있음을 알 수 있습니다 . 이때 주소를 방문하면 매우 자세한 오류 보고서를 볼 수 있습니다.

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

여기에 사진 설명 삽입
온라인 모드, 설정 APP_DEBUG = false, 이번에는 이전 오류 페이지로 돌아갑니다.
여기에 사진 설명 삽입

세, 오류 처리

1. 방법이 없습니다.

BaseController컨트롤러에서 __call메서드 정의합니다 . 액세스 한 컨트롤러가 컨트롤러를 상속하고 BaseController메서드를 찾을 수없는 경우이 __call메서드 를 입력합니다 . 액세스 방법은 API 형식의 json 데이터이거나 반환 페이지 일 수 있습니다. API 데이터 :

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

존재하지 않는 메서드에 액세스 할 때 :

다음 그림은 브라우저가 JSONView 플러그인을 설치했기 때문에 형식화 된 json 데이터 형식을 보여줍니다.

여기에 사진 설명 삽입

2. 컨트롤러가 존재하지 않습니다.

존재하지 않는 컨트롤러에 액세스 할 때 다음 오류도 표시됩니다.
여기에 사진 설명 삽입
해결 방법, app\controller디렉토리에 새 Error컨트롤러 만듭니다 (名字固定为Error).

<?php

namespace app\controller;

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

그런 다음 존재하지 않는 컨트롤러를 방문하십시오.
여기에 사진 설명 삽입

추천

출처blog.csdn.net/zy1281539626/article/details/110307960