thinkphp3.x 에서 display 방법 및 show 방법의 용법 인 스 턴 스
앞의 글 을 통 해 컨트롤 러 와 모델 작업 을 알 게 된 후에 우 리 는 보기 부분 을 익히 기 시 작 했 습 니 다.ThinkpHP 의 보 기 는 주로 템 플 릿 파일 과 템 플 릿 엔진 을 말 합 니 다.본 편 은 먼저 템 플 릿 파일 과 렌 더 링 출력 을 어떻게 하 는 지 알 아 보 겠 습 니 다.
템 플 릿 정의
템 플 릿 파일 을 보다 효과적으로 관리 하기 위해 ThinkpHP 는 템 플 릿 파일 을 디 렉 터 리 로 구분 합 니 다.기본 템 플 릿 파일 정의 규칙 은:
템 플 릿 디 렉 터 리/[그룹 명/][템 플 릿 테마/]모듈 명/조작 명+템 플 릿 접미사
템 플 릿 디 렉 터 리 는 기본적으로 프로젝트 아래 Tpl 입 니 다.그룹 을 정의 할 때 그룹 이름 에 따라 하위 디 렉 터 리 를 나 눕 니 다.새 템 플 릿 테 마 는 기본적으로 비어 있 습 니 다(템 플 릿 테마 기능 을 사용 하지 않 음 을 표시 합 니 다).
템 플 릿 테마 기능 은 다 중 템 플 릿 전환 을 위해 설계 되 었 으 며,여러 템 플 릿 테마 가 있 으 면 DEFAULT 를 사용 할 수 있 습 니 다.THEME 매개 변 수 는 기본 템 플 릿 테마 이름 을 설정 합 니 다.
모든 템 플 릿 테마 아래 항목 의 모듈 이름 을 디 렉 터 리 로 하고 각 모듈 의 구체 적 인 작업 템 플 릿 파일 입 니 다.예 를 들 어:
User 모듈 의 add 작업 에 대응 하 는 템 플 릿 파일 은:
Tpl/User/add.html
템 플 릿 파일 의 기본 접 두 사 는.html 이 며,TMPL 을 통 해서 도 가능 합 니 다.TEMPLATE_SUFFIX 를 다른 것 으로 설정 합 니 다.예 를 들 어,우 리 는 설정 할 수 있 습 니 다:
'TMPL_TEMPLATE_SUFFIX'=>'.tpl'
정의 후 User 모듈 의 add 작업 에 대응 하 는 템 플 릿 파일 은 다음 과 같 습 니 다.Tpl/User/add.tpl
프로젝트 가 모듈 그룹 기능(User 모듈 이 홈 그룹 에 속한다 고 가정)을 사용 하면 기본 값 으로 대응 하 는 템 플 릿 파일 은 다음 과 같 을 수 있 습 니 다.
Tpl/Home/User/add.html
그룹 모드 아래 디 렉 터 리 구조 가 너무 깊다 고 생각 되면 TMPL 설정 을 통 해FILE_DEPR 매개 변 수 는 템 플 릿 의 디 렉 터 리 단 계 를 간소화 합 니 다.예 를 들 어 설정:
'TMPL_FILE_DEPR'=>'_'
기본 템 플 릿 파일 이:Tpl/Home/User_add.html
바로 시스템 에 이러한 템 플 릿 파일 이 자동 으로 식별 되 는 규칙 이 있 기 때문에 우리 의 템 플 릿 렌 더 링 출력 에 간소 화 를 가 져 왔 다.
2.템 플 릿 렌 더 링
템 플 릿 이 정의 되면 display 와 show 방법 으로 출력 을 렌 더 링 할 수 있 습 니 다.그 중에서 display 방법 은 템 플 릿 파일 을 정의 해 야 하고 show 방법 은 내용 출력 을 직접 렌 더 링 하 는 것 입 니 다.
가장 많이 사용 되 는 것 은 display 방법 입 니 다.형식 을 호출 합 니 다.
첫 번 째 종류:
display('[테마:][모듈:][조작]'[,'문자 인 코딩'][,'출력 형식'])
두 번 째:
display('완전한 템 플 릿 파일 이름'[,'문자 인 코딩'][,'출력 형식'])
다음은 가장 전형 적 인 용법 으로 어떠한 매개 변수 도 가지 고 있 지 않다.
$this->display();
시스템 이 기본 규칙 에 따라 템 플 릿 파일 을 자동 으로 찾 습 니 다.따라서 보통 display 방법 은 어떠한 매개 변수 도 가지 고 대응 하 는 템 플 릿 을 출력 할 수 있 습 니 다.이것 은 템 플 릿 출력 의 가장 간단 한 용법 입 니 다.템 플 릿 정의 규칙 에 따라 템 플 릿 파일 을 정의 하지 않 거나 다른 모듈 아래 의 템 플 릿 을 호출 해 야 한다 면 사용 할 수 있 습 니 다.
$this->display('edit');
현재 모듈 아래 edit 템 플 릿 호출 표시
$this->display('Member:read');
Member 모듈 아래 read 템 플 릿 을 호출 합 니 다.만약 에 우리 가 템 플 릿 테마 기능 을 사용 했다 면 크로스 테마 호출 도 지원 할 수 있 습 니 다.사용:
$this->display('theme:User:edit');
theme 테마 아래 의 User 모듈 을 호출 하 는 edit 템 플 릿 을 표시 합 니 다.이러한 방식 의 렌 더 링 출력 은 템 플 릿 파일 의 경로 와 접 두 사 를 쓸 필요 가 없습니다.정확히 말 하면 이 안의 모듈 과 작업 은 반드시 해당 하 는 모듈 이나 작업 이 필요 하지 않 습 니 다.디 렉 터 리 이름과 파일 이름 일 뿐 입 니 다.예 를 들 어 프로젝트 에 Public 모듈 이 없 을 수도 있 고 Public 모듈 의 menu 작업 도 없 을 수도 있 습 니 다.그러나 똑 같이 사용 할 수 있 습 니 다.
$this->display('Public:menu');
이 템 플 릿 파일 을 출력 합 니 다.이것 을 이해 하면 템 플 릿 출력 이 뚜렷 해진 다.display 방법 은 출력 을 렌 더 링 할 때 출력 인 코딩 과 형식 을 지정 하 는 것 을 지원 합 니 다.예 를 들 어:
$this->display('read', 'utf-8', 'text/xml');
출력 XML 페이지 형식 을 표시 합 니 다.템 플 릿 디 렉 터 리 가 사용자 정의 이거 나 모듈 에 따라 디 렉 터 리 를 나 누 어 저장 할 필요 가 없다 면 기본 디 스 플레이 렌 더 링 규칙 은 처리 할 수 없습니다.이 럴 때 우 리 는 다른 방식 으로 대응 하여 템 플 릿 파일 이름 을 직접 입력 하면 됩 니 다.예 를 들 어:
$this->display('./Public/menu.html');
이 방식 은 템 플 릿 경로 와 접 두 사 를 지정 해 야 합 니 다.이 곳 의 Public 디 렉 터 리 는 현재 프로젝트 입구 파일 위치 아래 에 있 습 니 다.다른 접미사 파일 이 라면 직접 출력 도 지원 합 니 다.예 를 들 어:
$this->display('./Public/menu.tpl');
.../Public/menu.tpl 이 실제 존재 하 는 템 플 릿 파일 이 라면.템 플 릿 파일 의 위 치 는 템 플 릿 디 렉 터 리 가 아 닌 항목 의 입구 파일 입 니 다.
그리고 렌 더 링 템 플 릿 의 출력 내용 을 가 져 오 려 면 fetch 방법 을 사용 할 수 있 습 니 다.fetch 방법 은 display 와 대체적으로 일치 합 니 다.차이 점 은 fetch 방법 이 렌 더 링 된 후에 직접 출력 하 는 것 이 아니 라 렌 더 링 된 내용 을 되 돌려 주 는 것 입 니 다.예 를 들 어:
$content = $this->fetch('Member:edit');
fetch 방법 으로 렌 더 링 내용 을 가 져 온 후에 필터 와 교체 등 작업 을 하여 템 플 릿 출력 에 대한 복잡 한 수 요 를 사용 할 수 있 습 니 다.템 플 릿 파일 을 정의 하지 않 았 거나 템 플 릿 내용 을 데이터베이스 에 저장 하지 않 았 다 면 쇼 방법 으로 출력 을 렌 더 링 해 야 합 니 다.쇼 방법의 호출 형식:
show('렌 더 링 내용'[,'문자 인 코딩'][,'출력 형식'])
예컨대
$this->show($content);
인 코딩 과 형식 도 지정 할 수 있 습 니 다:
$this->show($content, 'utf-8', 'text/xml');
show 방법 중의 내용 도 템 플 릿 분석 을 지원 할 수 있 습 니 다.3.템 플 릿 할당
템 플 릿 출력 을 렌 더 링 하 는 방법 을 알 고 있 습 니 다.그러나 템 플 릿 에서 변 수 를 출력 하려 면 컨트롤 러 에서 변 수 를 템 플 릿 에 전달 해 야 합 니 다.assign 방법 으로 템 플 릿 변 수 를 할당 합 니 다.어떤 변수 유형 이 든 assign 할당 을 통일 적 으로 사용 해 야 합 니 다.
$this->assign('name',$value);
// :
//$this->name = $value;
assign 방법 은 display 와 show 방법 전에 호출 되 어야 하 며 시스템 은 설 정 된 변수 만 출력 할 수 있 습 니 다.다른 변 수 는 출력 되 지 않 습 니 다.(시스템 변 수 는 특수 한 태그 로 출력 할 수 있 고 템 플 릿 변 수 를 부여 하지 않 아 도 됩 니 다)어느 정도 변수의 안전성 을 보장 합 니 다.값 을 부여 하면 템 플 릿 파일 에 변 수 를 출력 할 수 있 습 니 다.내 장 된 템 플 릿 을 사용 하면 이렇게 출력 할 수 있 습 니 다.
{$name}
여러 템 플 릿 변 수 를 동시에 출력 하려 면 다음 방식 을 사용 할 수 있 습 니 다.
$array['name'] = 'thinkphp';
$array['email'] = '[email protected]';
$array['phone'] = '12335678';
$this->assign($array);
이렇게 하면 템 플 릿 파일 에서 name,email,phone 세 변 수 를 동시에 출력 할 수 있 습 니 다.템 플 릿 변수의 출력 은 템 플 릿 엔진 에 따라 다른 방법 이 있 습 니 다.우 리 는 뒤에서 템 플 릿 엔진 을 내장 하 는 용법 을 전문 적 으로 설명 할 것 입 니 다.만약 PHP 자 체 를 템 플 릿 엔진 으로 사용한다 면 템 플 릿 파일 에 직접 출력 할 수 있 습 니 다.
<?php echo $name.'['.$email.''.$phone.']';?>
내 장 된 템 플 릿 엔진 을 사용 하면 사용 할 수 있 습 니 다:
{$name} [ {$email} {$phone} ]
같은 내용 을 출력 하 다.더 많은 템 플 릿 탭 사용 에 대해 서 는 뒤쪽 템 플 릿 탭 에서 자세히 설명 하 겠 습 니 다.
템 플 릿 교체
템 플 릿 출력 을 하기 전에 시스템 은 렌 더 링 된 템 플 릿 결과 에 대해 템 플 릿 의 특수 문자열 교체 작업 을 할 수 있 습 니 다.즉,템 플 릿 출력 의 교체 와 필 터 를 실현 합 니 다.이 메커니즘 은 템 플 릿 파일 의 정 의 를 더욱 편리 하 게 할 수 있 습 니 다.기본 적 인 교체 규칙 은 다음 과 같 습 니 다.
.../Public:현재 프로젝트 로 대 체 될 공공 템 플 릿 디 렉 터 리 는 보통/프로젝트 디 렉 터 리/tpl/현재 테마/Public/
__TMPL__: 프로젝트 의 템 플 릿 디 렉 터 리 로 대 체 됩 니 다.보통/프로젝트 디 렉 터 리/Tpl/현재 테마/
(주:안전 을 위해.../Public 와TMPL__더 이상 사용 을 권장 하지 않 음)
__PUBLIC__:현재 사이트 의 공공 디 렉 터 리 로 대 체 됩 니 다.보통/Public/
__ROOT__: 현재 사이트 의 주소 로 바 뀝 니 다(도 메 인 이름 포함 하지 않 음)
__APP__: 현재 항목 의 URL 주소 로 대 체 됩 니 다(도 메 인 이름 제외)
__GROUP__:현재 그룹의 URL 주소 로 대 체 됩 니 다.(도 메 인 이름 없 음)
__URL__: 현재 모듈 의 URL 주소 로 대 체 됩 니 다(도 메 인 이름 제외)
__ACTION__:현재 작업 의 URL 주소 로 대 체 됩 니 다.(도 메 인 이름 포함 하지 않 음)
__SELF__: 현재 페이지 URL 로 바 뀝 니 다
이 특수 한 문자열 들 은 대소 문 자 를 엄 격 히 구별 하고 이 특수 문자열 들 의 교체 규칙 은 변경 하거나 추가 할 수 있 습 니 다.프로젝트 프로필 에 TMPL 만 설정 하면 됩 니 다.PARSE_스 트 링 하면 돼.같은 배열 색인 이 있 으 면 시스템 의 기본 규칙 을 변경 합 니 다.예 를 들 면:
'TMPL_PARSE_STRING' =>array(
'__PUBLIC__' => '/Common', // /Public
'__JS__' => '/Public/JS/', // JS
'/Uploads' => '/Uploads', //
)
템 플 릿 교체 규칙 이 있 으 면 페이지 의 모든PUBLIC__ 문자열 이 바 뀝 니 다.출력 이 필요 하 다 면PUBLIC__ 템 플 릿 에 문자열 을 넣 을 수 있 습 니 다.예 를 들 어:
'TMPL_PARSE_STRING' =>array(
'--PUBLIC--' => '__PUBLIC__', // /Public
)
이렇게 교체 규칙 을 추가 한 후,우리 가 출력 하려 면PUBLIC__ 문자열 은 템 플 릿 에--PUBLIC-만 추가 하면 됩 니 다.다른 문자열 을 바 꾸 는 출력 방식 은 유사 합 니 다.총화
이 학습 을 통 해 우 리 는 템 플 릿 파일 을 어떻게 정의 하고 템 플 릿 렌 더 링 출력 을 하 는 지,그리고 템 플 릿 변 수 를 어떻게 할당 하 는 지 대충 알 게 되 었 습 니 다.그 다음 에 우 리 는 템 플 릿 파일 에서 탭 을 사용 하여 글 씨 를 간소화 하 는 방법 을 배 울 것 입 니 다.
PS:본 사이트 의 포맷 미화 도 구 를 추천 합 니 다.앞으로 개발 에 사용 할 수 있 을 것 이 라 고 믿 습 니 다.
php 코드 온라인 포맷 미화 도구:
http://tools.jb51.net/code/phpformat
JavaScript 코드 미화/압축/포맷/암호 화 도구:
http://tools.jb51.net/code/jscompress
온라인 XML 포맷/압축 도구:
http://tools.jb51.net/code/xmlformat
JSON 코드 포맷 미화 도구:
http://tools.jb51.net/code/json
온라인 XML/JSON 상호 변환 도구:
http://tools.jb51.net/code/xmljson
sql 코드 온라인 포맷 미화 도구:
http://tools.jb51.net/code/sqlcodeformat
thinkpHP 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.ThinkpHP 입문 강좌,ThinkPHP 상용 방법 총화,smarty 템 플 릿 입문 기초 튜 토리 얼과PHP 템 플 릿 기술 총화.
본 고 는 ThinkPHP 프레임 워 크 를 기반 으로 한 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Thinkphp의 S 캐시 사용법!텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.