2016.06.29
1. 문제 설명
오늘 ThinkPHP를 사용하여 사용자 로그인 및 등록 인터페이스를 만들었습니다. 양식을 제출할 때 작업 속성을 어떻게 입력하는지 모르겠습니다
: 다른 버전의 ThinkPHP 3.2.3을 사용하고 있습니다. 버전에 차이가 있을 것입니다
2. 해결 방법
방법 1): localhost/..../index.php/module/controller/method/parameters ....
즉, 제출하려는 위치를 가리키는 전체 URL 주소를 사용하세요. 처음에는 어떻게 해야할지 몰라서 이렇게 가장 서투른 방법을 사용하게 되었습니다. . . .
방법 2): {:U('Module/Controller/Method/Parameter')}
U 메소드는 URL을 구성하기 위해 ThinkP에 내장된 메소드입니다. 자세한 사용법은 ThinkPHP 개발 매뉴얼을 참고하세요.
방법 3): __MODULE__/controller/method/parameters,
__ControlLER__/method/parameters,
__ACTION__/parameters,
즉, 주소를 단순화하기 위해 시스템 상수를 사용하는 ThinkPHP는 lot 현재 URL 주소를 저장하는 시스템 상수,
예: __ROOT__ 웹 사이트 루트 디렉터리 주소
__APP__ 현재 애플리케이션(항목 파일) 주소
__MODULE__ 현재 모듈 URL 주소
__ControlLER__ 현재 컨트롤러의 URL address
__ACTION__ 현재 작업 URL 주소
__SELF__ 현재 URL 주소
3. 요약
일반적으로 Form 제출 시 어느 php 파일에 제출할지 명시하고 파일 주소만 적어주시면 됩니다. 다만, ThinkPHP를 이용하여 폼을 제출할 때, 어떤 모듈에서 어떤 컨트롤러, 어떤 메소드를 제출할지, 또는 기본적으로 컨트롤러와 메소드가 있는 index.php 같은 파일을 명시해야 합니다. 그렇지 않으면 오류가 발생합니다.
그리고 온라인에서 솔루션을 검색해 보니 거의 대부분의 답변이 __RUL__/method/parameters를 사용한 것으로 나타났습니다. 그러다가 ThinkPHP3.2.3 매뉴얼을 확인해보니 시스템 상수 __URL__이 없는 것을 발견했습니다. 직접 테스트한 결과 __RUL__은 현재 컨트롤러의 주소인 __ControlLER__와 동일하다는 것을 알았습니다.
온라인 검색 방법 중 상당수는 이전 버전에서 따온 것입니다. 저는 초보자이고 최신 버전만 사용해 왔기 때문에 온라인에서 검색할 때 항상 혼란스럽습니다. 정보를 사용할 때 버전에 주의를 기울여야 합니다.
위 내용을 포함하여 ThinkPHP 사용 시 3가지 폼 액션 제출 주소 형식을 소개하고 있으니 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되었으면 좋겠습니다.