찾다

 >  Q&A  >  본문

ThinkPHP6..0.2 공식 버전의 다중 애플리케이션 모드에서 라우팅 정의

이전에 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]

吾逍遥吾逍遥1793일 전1882

모든 응답(0)나는 대답할 것이다

답장 없음
  • 취소회신하다