2013-03-07 1 views
2

내가 header.tpl과 footer.tpl을 가지고 있고 그 둘 사이에 body.tpl이 있다고 가정 해 봅시다.

의 내가 특정 세션 같은 것을 설정되어 있는지 여부를 확인하여 body.tpl에 대한 액세스를 제한하려는 가정 해 봅시다 :

session_start(); 
if (isset($_SESSION['limited'])) { 
    //render body.tpl 
} else { 
    //direct somewhere else 
} 

겠습니까 session_start(); if (isset()) { 부분이 header.tpl과 } else {}에있는 경우이 작업 footer.tpl 파일에 있습니까?

내 계획은 모든 페이지에 포함되는 머리글과 바닥 글에서 세션 검사를하므로 템플릿을 렌더링하는 PHP 파일에서 수행 할 필요가 없다는 것입니다.

이 같이

에게 (body.tpl의 내용) :

<?php require_once(TEMPLATE_PATH. "/header.tpl"); ?> 
//body.tpl contents 
<?php require_once(TEMPLATE_PATH. "/footer.tpl"); ?> 

body.tpl이 requires 필요한 모든 파일을 작성하는 데 사용되는 모든 클래스를 인스턴스화하는 PHP 파일을 통해 호출되는 tpl 파일. PHP 파일에서 세션 검사를 수행하면 의도 한대로 작동합니다.

+0

예 그렇습니다. –

+2

잘 수행 할 수 있습니다;) – xelber

답변

0

요청을 실행하는 동안 PHP 코드에서 $ _SESSION 객체에 액세스 할 수 있습니다. session_start를 한 번만 호출하십시오.

ps. 이 접근법은 코드 중복을 가져오고 후회할 것입니다.

0

템플릿 엔진을 사용하는 경우가 더 잘 할

당신은 쉽게의 많은이 훨씬 더 많은 일을 할 수있을 것입니다 (http://www.smarty.net/을보십시오). 이 선을 따라 뭔가를 할 수있을 것입니다.

당신이 페이지 foo.tpl을 보여주고 싶은 가정,, 당신은 두 개의 다른 스마티 템플릿 1 header.tpl이

{include file="header.tpl"} 

{$foo} 

{include file="footer.tpl"} 
같이 보일 것입니다 2. footer.tpl

foo.tpl 당신의 PHP 페이지에서 다음

, foo.tpl 렌더링 할

$smarty-assign('foo',$my_content); 
$smarty->display("foo.tpl"); 

이를 통해 변수로 출력을로드, 당신이 원하는대로 로직 수행을 포함하여 e $ foo와 함께 header.tpl과 footer.tpl의 내용

관련 문제