15대 16대 대통령 추모 배너

'Developer/CakePHP'에 해당되는 글 1건

  1. 2009/07/15 External Javascript and CakePHP
Developer/CakePHP2009/07/15 21:56

프로젝트를 진행하면서 각 개발자의 계정(도메인)정보를 config 파일에 기록하여 각각 관리하는데,

CakePHP에서는 APP디렉토리 마다 config/core.php 를 만들어서 필요한 파일을 기록하고 있습니다.

core.php

Configure::write(‘hosts’, array(
	'WWW' => 'http://www.minseop.com',
));

 

문제가 된 부분은 Javascript 였습니다.

Javascript 에서도 이런 사용자별 호스트 정보를 이용할 경우가 있지요.

그냥 js 파일을 만들어서 기록하고,

layout 에 담아두면 문제는 없습니다.

하지만, 관리적인 면에서 비효율적이라는 생각이 들었습니다.

 

이를 해결하기 위해 PHP에서 이용할 수 있는 하나의 방법입니다.

 

index.php

<script type="text/javascript" src="/js/extend.php"></script>

 

extend.php

<?php
header('content-type:application/x-javascript');
$message = 'Javascript Test';
echo("document.write('{$message}')\n");
?>

 

이렇게 이용하면 외부 파일을 불러와서 이용하는 것이 가능해 집니다.

 

CakePHP에서 이 방식을 이용하면,

Configure Class를 이용하기 위해 너무 많은 라이브러리가 필요했습니다.

 

아니면, hosts Array 만 따로 파일을 만들어서 core.php와 extend.php에서 공동으로 이용할 수도 있습니다.

하지만 개별적으로 관리해야 하는 파일이 하나 추가되는 부분이 조금 걸리네요..^^;;

 

 

그래서, 다른 방법으로 Javascript를 위한 컨트롤러를 생성할 수 있습니다.

exjs_controller.php

<?php
class ExjsController extends AppController {
	var $name = 'Exjs';
	var $uses = null;
	var $autoRender = false;
	var $autoLayout = false;

	function index() {
		header('content-type:application/x-javascript');
		$hosts = Configure::read('hosts');
		foreach ($hosts as $k => $v) {
			echo "var HOST_{$k} = '{$v}';\n";
		}
	}
}
?>

 

index.php

<script type="text/javascript" src="/exjs/"></script>

 

이런 방법으로 Javascript와 PHP에서 이용할 수 있는 config파일을 쉽게 관리할 수 있습니다.

또한, hosts 외에도 다른 설정 값을 이용할 수 있다는 장점도 있네요.^^

 

 

 

참조 :

http://www.javascriptkit.com/javatutors/externalphp.shtml

Posted by 슈팅스타337