ThinkPHP6..0.2 공식 버전의 다중 애플리케이션 모드에서 라우팅 정의
吾逍遥
吾逍遥 2020-02-24 18:14:46
0
0
1855

이전에 ThinkPHP5.0.24 프레임워크를 사용하여 WeChat 애플릿의 RESTFul API를 개발했습니다. 최근에 ThinkPHP6.0.2로 업그레이드하고 싶습니다. 디렉토리 구조는 다음과 같습니다. .php 버전 다음 형식으로 경로에 직접 작성할 수도 있습니다: Route::get('api/:version/home','api/:version.Index/home'); 이는 ThinkPHP6에서 더 이상 지원되지 않습니다. .0.2, https://blog.csdn.net/qq_35422558/article/details/100563723을 참조하십시오. 이 문서에서는 웹사이트 루트 디렉터리의 경로 파일 아래에 api 폴더를 만듭니다. 아래는 Route.php입니다. --route --api --route.php app.php--verdor는 Route::get('api/:version/home','api/:version.Index/home')과 같은 구조를 가진 라우팅 파일을 작성합니다. apiroute.php에 있습니다. [b]테스트 후 유효하지 않음[/b].
ThinkPHP6 개발 매뉴얼을 참조하면 라우팅 주소가 더 이상 모듈/컨트롤러/작업을 지원하지 않지만 여전히 컨트롤러/작업 또는 클래스 메서드를 지원한다는 것이 명확하게 지적되었습니다. 따라서 세 가지 해결 방법이 있습니다. 첫 번째 방법은 클래스에 정의된 메서드를 Route::get(':version/home','appapicontroller:versionindex@home')으로 작성할 수 있다는 것입니다. 액세스 URL은 http://localhost/[b]api[/b]/v1/home입니다. 애플리케이션 아래의 경로 정의에는 애플리케이션 이름을 추가해야 합니다. Routeapp.php에 작성된 경우 액세스 URL은 http://localhost/v1/home입니다. 아무것도 추가하지 마세요.
두 번째: 컨트롤러/작업 정의는 응용 프로그램 디렉터리 routeroute.php에만 작성할 수 있습니다. 테스트 후 Route.php 파일 이름을 임의로 정의할 수 있습니다. Routeapiroute.php에 정의할 수 없으며 테스트가 유효하지 않습니다. Route::get(':version/home',:version.Index/home') 정의 시 애플리케이션 이름 부분을 제거하고 URL, 즉 http://localhost/api/v1/에 액세스할 때 추가합니다. home
세 번째 유형: 단일 애플리케이션 모드에서 다중 레벨 컨트롤러 사용 --app --controller --api --v1 --Index.php --admin --Index.php --home --Index.php 이때 , 경로는 Routeapp.phpRoute::get('api/:version/home',api.:version.Index/home')에 정의되어 있습니다.

이 문제는 많은 ThinkPHP6 튜토리얼에서 언급되지 않았으며 테스트 후 인터넷이 작동하지 않았습니다. 따라서 요약은 다음과 같습니다. 1. 단일 응용 프로그램 모드 다중 레벨 컨트롤러는 api 및 v1 디렉터리를 컨트롤러의 하위 디렉터리로 사용합니다. 구조는 위와 같습니다. 프로젝트에서는 관리자와 홈 모두 동일한 보기와 모델을 사용할 수 있도록 하는 것이 더 합리적이라고 생각합니다.
2. 다중 애플리케이션 모드에서는 먼저 다중 애플리케이션 모드 확장 프로그램을 설치해야 하며, 작곡가는 topthink/think-multi-app을 요구하고, 그런 다음 PHP Think Build API가 애플리케이션 디렉토리를 생성한다고 생각합니다. auto_multi_app=true로 설정하면 컨트롤러가 있는지 여부에 따라 프레임워크가 판단됩니다. 애플리케이션 디렉터리에 경로 디렉터리를 만들고 그 디렉터리에 경로를 정의합니다. . 애플리케이션 이름은 필요하지 않습니다. 액세스할 때 URL에 추가하기만 하면 됩니다. Route::get(':version/home',:version.Index/home')은 url: http://localhost/api/v1/home
3에 해당합니다. 이 방법은 일반적으로 사용되지 않습니다. 하지만 위 분석에 따르면 apirouteroute.php와 Routeapp.php에 정의할 수 있지만 액세스하는 URL이 다릅니다. 전자는 반드시 애플리케이션 이름 api로 추가해야 하고 후자는 무엇이든 해서는 안 됩니다. 무엇이든 추가하세요.
4. 위 URL을 입력할 때 입력 파일이 지정되지 않았다는 메시지가 표시되는 경우 http://localhost/index.php에 index.php를 추가하면 이 문제를 해결할 수 있습니다. public.htaccess에서 RewriteRule ^(.*)$ index.php/$1 [QSA,PT,L]의 index.php 뒤에 ?를 추가하는 것이 좋습니다. 이는 RewriteRule ^(.*)$ index.php?/입니다. $1 [QSA,PT,L]

吾逍遥
吾逍遥

事在人为

모든 응답(0)
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿