티스토리 뷰

www/WEB

[PHP] Slim Framework with TWIG

유승구 2012. 9. 11. 13:20

WEB 쪽 일은 당분간 안할 줄 알았는데 세상이 이걸 모르면 아무것도 할 수 없을 정도로 긴밀해졌다.

SNS 쪽 파트를 담당하면서 OpenAPI쪽 개념을 잡아가다 보니 프로젝트 구현을 하다보면서 점차 이러한 방식으로 기울어지고 있다. PHP가 다시금 떠오르는 상황인 듯 한데.. 뭐 웹언어야 언제든 적절하게 사용을 하는 것이니 여러가지 맛을 보면 좋을 듯 하다.


PHP 프레임워크를 이것저것 찾다보니 다양한게 많다.

ZEND만 알던 시절이 있었는데 어느새 이것저것 나오기 시작했다.

그런데 이걸 쓰자니 왠지 애매모호하고 시간도 없고 해서 필요한 것만 쓰려고 찾다 보니 Slim Frame work를 알게 되었다. 우리나라에는 이걸 검색하면 엉뚱한 옷만 나온다. 정말이지.. 에휴..


이 Slim 프레임워크는 템플릿을 여러개 제공하고 있다.

그중에서 Twig을 써서 만든 튜토리얼이 많아 이를 사용하기로 결정했다.


slim extra가 있다. 이걸 이용해서 다른 템플릿 엔진을 연동 시킬수 있다.

twig 홈페이지에 가면 각 서버 환경에 맞게 인스톨 하는 방법이 있다.

나는 뭐가 뭔지 잘 몰라서 pear로 일단 설치 하고 tarball을 또 받아 압축을 풀었다.


extra안에 보면 views가 있고 그 안에 각각 템플릿 엔진 연동 파일이 있다.

다른 설명을 보면 TwigView.php를 찾으라고 하는데 2,0 버전에는 Twig.php만 있다.


참고한 Site는 다음과 같다.

http://willisbored.com/2011/04/04/tutorial-slim-php-view-templates/

http://silentworks.co.uk/blog/development/using-twig-with-slim-framework.html


그냥 똑같이 하고 내용만 한글로 몇자 적을 뿐이다.

나만 알아볼 생각이다. 나는 정말 나쁜놈 -_-v (사실 자세히 정리할 시간이 없다. 구현이 빠듯해서;;)


폴더 구조는 이렇게 구성했다.


[Slim]

[Views] - Slim Extra에 있는 view를 그대로 이동

[Twig] - Twig lib에 포함된 Twig 폴더를 그대로 이동

[templates] - view로 보여질 html 파일을 위치시킬 폴더

index.php


index.php를 열어서 Twig.php를 읽어 들인다.


require 'Views/Twig.php';


Twig 클래스에 있는 static 변수 2개를 서버 환경에 맞게 셋팅해준다.


Twig::$twigDirectory = dirname(__FILE__) . '/Twig';

Twig::$twigExtensions = array( 'Twig_Extensions_Slim' );


그런 다음 Slim 초기화 시켜주는 부분에는 View를 정의해준다.


$app = new Slim(array( 'view' => 'Twig' ));


그런 다음 Template에 내용을 생성시키고 view로 쓸 html 파일을 그려준다.


$app->get('/', function() use($app) {

  // Set up a couple reandom variables to pass to the view..

  $title = "Hi I'm a title";

  $body = "something to display in the body";

  

  echo "$title $body";

  

  // Set data to be passed to the view template

  $app->view()->setData(array('title' => $title, 'body' => $body));

  

  // Tell slim/Twig which template to render for this route

  $app->render('home.html');

});


home.html은 다음과 같다. 이 녀석은 templates 폴더에 저장해둔다.


<!DOCTPE html>

<html>

<head>

  <title>{{ title }}</title>

</head>

<body>

  <p>{{ body }}</p>

  <ul>

  {% for i in 0..10 %}

  <li>Here's the value of i: {{ i }}</li>

  {% endfor %}

  </ul>

</body>

</html>


이러면 완성!

설명이 적은거 같다 싶으면 링크해둔 두 곳을 참고 하길 바란다.


'www > WEB' 카테고리의 다른 글

OpenAPI의 설계  (0) 2012.11.23
[서버와 통신하는 APP 개발] Server 구현편  (0) 2012.11.22
[PHP] Slim Framework with TWIG  (0) 2012.09.11
PHP Pear 설치  (0) 2012.08.28
500 내부 서버 오류  (0) 2012.08.27
[PACMAN] 소스 분석 기행문  (0) 2012.02.06
댓글
댓글쓰기 폼