태터데스크 관리자

도움말
닫기
적용하기   첫페이지 만들기

태터데스크 메시지

저장하였습니다.
2008.03.07 11:26
젠드 프레임워크에 대한 한글 메뉴얼입니다.

번역은 네이버를 이용했구여.. 영문판이 아니라 일어 메뉴얼을 번역한겁니다.

번역이 매끄럽지 못한 부분이 있겟지만 이해하기 힘들정도는 아니라고 봅니다.

이것을 보기위해서는 jw free note 라는 프로그램이 있습니다.

전부 html이기 때문에 웹 브라우저에서 보는 것도 상관없습니다만, 이왕이면 저 프로그램을 통해서 보시는게 편할겁니다.

웹브라우저에서 보실거라면 ___jw_free_note_folder.htm 파일이 인덱스 파일이라고 보시면 됩니다.

관련 사이트
젠드 프레임워크 공식 사이트
네이버 번역사이트

지난글
2007/08/31 - [프로그래밍/Framewrok] - Zend Framework(1.0.1) 설치하기 및 가장 기본적인 샘플
2007/08/28 - [프로그래밍/Framewrok] - Zend Framework 1.0.1 한글 메뉴얼
Posted by 네오미르
2007.08.31 10:16

공식사이트 에서 젠드 프레임워크를 다운받습니다.. 제가 사용한 버전은 1.0.1 입니다.

아파치와 php는 깔려있다는 전제하에 설명을 드리겠습니다..

제 디렉토리 구조를 설명드리겠습니다
~/_app
      /controllers
      /models
      /views/scripts/컨트롤러명/액션명.phtml
      /모듈명/controllers
                 /models
                 /views/scripts/컨트롤러명/액션명.phtml
~/_lib/Zend/젠드 클래스들..
~/root  <- 이 폴더를 아파치에서 DocumentRoot 로 잡아주셔야 합니다
      /.htaccess
      /index.php

첨부파일을 다운받으시면 위의 구조로 되어있습니다
_app에 보시면 모듈명 폴더는 없습니다.. 저것은 모듈별로 별도로 처리할경우
예를들어 게시판일경우 ~/_app/board/controllers, ~/_app/board/views/~ 이런식으로 모듈별로 관리할경우입니다..

다운받은 파일을 적당한 곳에 푸시고 ~/root 폴더를 아파치의 DocumentRoot로 잡아주시고 재실행해주시면 될겁니다..

http://localhost/
http://localhost/index/test
http://localhost/test
http://localhost/test/test

화면에 나오는 내용은 Hello, World! 와 어느 뷰페이지가 사용되는지, 어느 클래스와, 어느 액션이 처리되는지를 보여줄겁니다..

그리고 만약에 페이지를 찾을수 없다고하면 아파치 설정을 수정해 보세요

httpd.conf 파일을 수정해주세요

<Directory "~~~~~~~\root"> <- 샘플 소스가 잇는 경로
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>


Posted by 네오미르
2007.08.28 10:40

젠드 프레임워크에 대한 한글 메뉴얼입니다.

번역은 네이버를 이용했구여.. 영문판이 아니라 일어 메뉴얼을 번역한겁니다.

번역이 매끄럽지 못한 부분이 있겟지만 이해하기 힘들정도는 아니라고 봅니다.

이것을 보기위해서는 jw free note 라는 프로그램이 있습니다.

전부 html이기 때문에 웹 브라우저에서 보는 것도 상관없습니다만, 이왕이면 저 프로그램을 통해서 보시는게 편할겁니다.

웹브라우저에서 보실거라면 ___jw_free_note_folder.htm 파일이 인덱스 파일이라고 보시면 됩니다.

관련 사이트
젠드 프레임워크 공식 사이트
네이버 번역사이트

Posted by 네오미르
2007.04.27 10:23
APM등이 설치되어 있어야 합니다
아래의 폴더명은 제가 정의한 것이며 zend framework 메뉴얼에 보시면 비슷한 패턴으로 폴더를 지정하라는 내용이 있습니다.

~/_app
      /controllers
      /models
      /views
~/_lib
~/document_root  <- 이 폴더를 아파치에서 DocumentRoot 로 잡아주셔야 합니다

이방식은 Zend에서 권장하는 방식이며 외부에서 라이브러리폴더나 로직파일들에 대한 직접적인 접근을 배제할수 있습니다.


 

  1. http://framework.zend.com/download/stable 에서 소스를 다운 받습니다.
  2. 압축을 풀어보시면 library폴더가 있고 그안에는 Zend.php , Zend폴더가 있습니다. 이것을 ~/_lib에 복사를 하십시오.
  3. document_root 폴더에 .htaccess 파일을 만들고

    RewriteEngine on
    RewriteRule !.(js|ico|gif|jpg|png|css)$ index.php

    이 내용을 적습니다.
  4. document_root에 index.php파일을 만들고 아래의 내용을 적습니다.

    <?php
    define(MODELS_PATH, '../_app/models/', true);
    define(ZEND_PATH, '../_lib', true);
    define(CONTROL_PATH, '../_app/controllers', true);
    define(FRONT_PATH, 'Zend/Controller/Front.php', true);

    set_include_path(ZEND_PATH);
    require_once FRONT_PATH;
    Zend_Controller_Front::run(CONTROL_PATH);

    echo '<br>스크립트 종료';
    ?>
  5. _app/controllers 폴더에 indexController.php, testController.php 를 만듭니다.

    indexController.php
    <?php
    require_once 'Zend/Controller/Action.php';
    set_include_path(MODELS_PATH);
    class IndexController extends Zend_Controller_Action {
     public function indexAction() {
      echo 'Hello! World.';
    }

    public function noRouteAction() {
      $this->_redirect('/');
     }
    public function hiAction() {
      echo 'hihihihihi~~~~~~~~~~~~~~~~<br>';
    }
    }
    ?>

    testController.php
    <?php
    require_once 'Zend/Controller/Action.php';
    set_include_path(MODELS_PATH);
    class TestController extends Zend_Controller_Action {
     public function indexAction() {
      echo 'TestController (으)로부터 안녕하세요';
     }
     public function noRouteAction() {
      $this->_redirect('/');
     }
     public function hiAction() {
      echo 'hihihihihi';
     }
    }
    ?>

여기까지 완료되었다면 로컬에서 한다고 가정하고
http://localhost/
http://localhost/index/hi
http://localhost/test
http://localhost/test/hi

해보세요...

여기까지가 Zend Framework의 시작입니다..






Posted by 네오미르
2007.04.25 18:10
Zend사에서 개발한 Zend Framework입니다.

번역은 네이버에서 일어->한글번역한 것이라서 어색한 부분이 있겟지만.. 영문을 번역한것보단 쓸만합니다.. ㅋㅋ
jwFreeNote라는 프로그램을 사용하시는 분들은 데이터디렉토리에 풀어 놓으시면 되구여
그렇지 않으신분들은 ___폴더설명.htm파일을 인덱스 파일로 보시면 됩니다..

그리고 모든 부분을 저장한건 아닙니다..
db나 view의 경우 제가 따로 사용하는게 있어서 제외시켰습니다.
그외에 기본적으로 봐야 될부분에 대해서만 파일을 만들어놨구여 나머지의 경우 네이버 번역페이지로 링크되어 있어서 한글로 보실 수 있습니다.

이 프레임워크를 사용하면 php로 사이트등을 개발할때 MVC 모델에 맞게 개발할수 있습니다.

관련 사이트 : http://framework.zend.com/
Posted by 네오미르
2007.03.14 16:18
Zend사에서 개발한 Zend Framework입니다.

번역은 네이버에서 일어->한글번역한 것이라서 어색한 부분이 있겟지만.. 영문을 번역한것보단 쓸만합니다.. ㅋㅋ
jwFreeNote라는 프로그램을 사용하시는 분들은 데이터디렉토리에 풀어 놓으시면 되구여
그렇지 않으신분들은 ___폴더설명.htm파일을 인덱스 파일로 보시면 됩니다..

그리고 모든 부분을 저장한건 아닙니다.. 기본적으로 봐야 될부분에 대해서만 파일을 만들어놨구여 나머지의 경우 네이버 번역페이지로 링크되어 있어서 한글로 보실 수 있습니다.

이 프레임워크를 사용하면 php로 사이트등을 개발할때 MVC 모델에 맞게 개발할수 있습니다.

관련 사이트 : http://framework.zend.com/

Posted by 네오미르
2007.02.09 14:28
내가 작업한 환경은 윈도우즈XP 이다.


1. APM, AutoSet, 도깨비, XAMPP 등 다양한 PHP와 아파치 서버조합을 설치해야한다.... =>당연히 했을거라 생각하고 패스~

2. pear가 설치되어 있다면 패스~
  설치 안되어 있다면..
  php가 설치된 폴더에 보면 PEAR폴더가 있고 그안에 go-pear.php, go-pear.phar 등의 파일이 있을것이다..
  없다면   http://go-pear.org/ 이곳에 가면 바로 php소스가 보일것이다..
      이것을 PEAR 폴더에 go-pear.php등으로 저장하라.. 파일명은 달라도 상관없다.
  있다면 프롬프트 창에서 php go-pear.php 치면 설치가 될것이다...
     이때 설치경로라든가.. 몇가지 설정항목이 나오는데... 걍 엔터쳐서 넘어가도 무방할 것이다..
  관련 사이트   http://pear.php.net/manual/en/installation.getting.php  이곳에 가면 다양한 OS에 맞는 설치방법이 있다
 
3. Symfony Framework 설치
  프롬프트 창에서 pear channel-discover pera.symfony-project.com 입력하고 엔터
  다음, pear install symfony/symfony 입력하고 엔터
  그러면 PEAR폴더에 symfony폴더가 생성되고 그곳에 심포니가 설치될것이다..
  관련 사이트    http://www.symfony-project.com/trac/wiki/BeginningSymfonyWithPear
 이렇게 하면 Symfony Framework 설치는 끝난것이다...

※만약 프롬프트창에서 pear명령어가 안먹는다면 환경변수 path에 php 폴더의 경로를 추가해 주면 pear, symfony명령어를 아무 위치에서든 쓸수 있습니다... - 이정도는 다 아시겠지만.. 혹시나해서..
Posted by 네오미르
2007.02.09 14:00


심포니 개발 사이트에서 얻어온 자려구여..
심포니로 개발해보실분들은 보고 따라해보세요...
근데.. ㅡ,ㅡ;; 전 _cart.php부분에서 에러가 나네여...

참고로 동영상과 차이점이 있는데...
동영상에서 보시면 어플리케이션의 모듈파일들은 최상위(?)폴더에 존재하더라구여...
근데 1.0.0rc2버전에서 해보시면 알겠지만
apps폴더 안에서 생성됩니다...
모듈 생성후 확인할때는
http://주소(저의경우 localhost)/app_dev.php/cart/index까지 해야 되더라구여...

http://downloads.symfony-project.com/demo/cart/cart.mov
 
Posted by 네오미르
2007.02.07 15:08
출처 : http://sunhwan.tistory.com/7

PHP 웹 프레임워크인 Symfony1 를 이용하여 AJAX 기반의 어플리케이션을 만들어보겠습니다. 그 중에서도 특히 Script.aculo.us2 의 draggable_element 와 droppable_element 를 활용하여 Post-It 스타일의 메모장을 만들어볼 계획입니다.

1. 먼저 symfony 명령을 활용하여 프로젝트를 준비합니다. 프로젝트명은 note, 어플리케이션 이름도 note 로 하겠습니다.
# mkdir note
# cd note
# symfony init-project note
# symfony init-app note

2. 아파치 설정을 변경하시거나 해당 디렉토리를 웹이 접근가능한 폴더로 변경합니다. 그리고 테스트를 하시면 'Symfony Project Created' 페이지를 만나실 수 있습니다. 참고로 제 웹 설정을 올려보겠습니다.
# /etc/httpd/users/sunhwan.conf
<Directory "/usr/local/lib/php/data/symfony/web/sf">
    AllowOverride All
    Allow from all
</Directory>

<VirtualHost *:80>
    ServerName note
    DocumentRoot "/Users/sunhwan/working/note/web"
    DirectoryIndex index.php
    Alias /sf /usr/local/lib/php/data/symfony/web/sf

    <Directory "/Users/sunhwan/working/note/web">
        AllowOverride All
        Allow from all
    </Directory>
</VirtualHost>
사용자 삽입 이미지

좀 더 상세한 프로젝트 생성방법은 심포니 홈페이지3 을 참고하시면 됩니다.

3. 이제 우리가 사용할 어플리케이션이 사용할 데이터베이스를 설정합니다. 지금 우리가 만들 어플리케이션은 규모도 크지 않고 다른 어플리케이션들과의 연동도 별로 없기때문에 XML 이나 다른 파일 형태로 저장하는 것도 나쁘지 않을 것 같았지만, 사실 Symfony 에서 이를 어떻게 구현할지 익숙하지 않아서 일단 데이터베이스를 사용하기로 했습니다.

note/config 디렉토리에 있는 database.yml, propel.ini, schema.yml 파일을 수정합니다.
# database.yml
all:
  propel:
    class:          sfPropelDatabase
    param:
      dsn:          mysql://root:@localhost/Note

# propel.ini
propel.database.url        = mysql://root@localhost/note

# schema.yml
propel:
  note:
    _attributes: { phpName: Note }
    id:
    title:    varchar(255)
    contents: longvarchar
    x:        smallint
    y:        smallint
    z:        tinyint
    width:    smallint
    height:   smallint
사실 이러면 안 되지만, 저는 방화벽이 설치된 로컬에서 MySQL 을 돌리는 관계로, root 비밀번호가 없습니다. database.yml 이나 propel.ini 파일의 아이디 뒷부분에 자신에 해당하는 비밀번호를 입력하면 됩니다.

4. 이제 데이터베이스를 생성합니다. Symfony 는 schema.yml 에 입력된 정보를 바탕으로 데이터베이스 구조를 생성할 수 있습니다.
symfony propel-build-model
symfony propel-build-sql
mysqladmin -u root create database note
symfony propel-insert-sql
데이터베이스에 접속해보시면 note 테이블이 생성된 것을 확인하실 수 있습니다. 또한 데이터베이스 자료와 PHP 자료형을 연결시켜주는 역할을 하는 모델들이 note/lib/model 디렉토리에 생긴것을 확인하실 수 있습니다.

5. 이제 생성된 모델을 이용해서 기본적인 데이터 입력, 호출, 수정, 그리고 삭제 (CRUD - Create, read, update, and delete) 를 하는 모듈을 만들어 보겠습니다. 모델명은.. 역시 note 입니다.
symfony propel-generate-crud note note Note
참고로 앞에서부터 어플리케이션, 모듈, 그리고 데이터모델 순서입니다. 즉, 만약 blog 라는 어플리케이션을 만들고, 그 아래 Article 이라는 데이터모델을 이용하여 post 라는 모듈을 만든다면 'symfony propel-generate-crud blog post Article' 이 되는 것입니다.
 
사용자 삽입 이미지

CRUD - List


사용자 삽입 이미지

CRUD - Show


사용자 삽입 이미지

CRUD - Create/Edit


6. 이제 템플릿을 수정할 차례입니다. 다른 부분이야 그대로 두고, note/list 액션의 템플릿을 바꿔서 노트형식으로 보이도록 할 계획입니다. 또한 이부분 draggable/dropperable element 들을 설정하여 만약 개별 노트의 위치가 변경되는 경우에 데이터베이스를 변경하도록 할 것입니다.

먼저 note/apps/note/modules/note/templates/listSuccess.php 파일을 수정합니다.
<div id='notepad' class='notepad' style='position: absolute; top: 5px; left: 5px;'>

<h1>note</h1>

<?php foreach ($notes as $note): ?>

  <div id='note_<?php echo $note->getId() ?>' class='note' style="
    position: absolute;
    left: <?php echo $note->getX() ?>px;
    top: <?php echo $note->getY() ?>px; ">
    <h2><?php echo link_to($note->getTitle(), 'note/show?id='.$note->getId()) ?></h2>
   
    <?php echo $note->getContents() ?>
  </div>
 
<?php endforeach; ?>

<?php echo link_to ('create', 'note/create') ?>

</div>
note/web/main.css 에 아래 내용을 추가합니다.
.note
{
  background-color: #FFFFCC;
  width: 200px;
  height: 200px;
}
그리고 테스트를 해보신다면 아래와 같은 화면을 보실 수 있습니다. 각각의 노트는 데이터베이스에 있는 X, Y 값을 사용하여 위치가 결정될 것입니다.
사용자 삽입 이미지

Post It!?


7. 이제 마지막으로 AJAX 액션을 추가할 차례입니다. Symfony 에는 Prototype 과 Script.aclo.us 가 기본적으로 내장되어 있기 때문에 따로 설치할 필요는 없습니다. 개체를 드래그 앤 드랍이 가능하도록 만들어주는 명령은 draggable_element 입니다. 또한 어떠한 개체가 자신의 위에 드랍되었을때 특정한 액션을 일으킬 수 있도록 하기 위해서 drop_receiving_element 를 사용합니다.

apps/note/modules/note/templates/listSuccess.php 를 여시고, 다음 내용을 맨 위쪽에 입력합니다.
<?php echo use_helper('Javascript') ?>
아래 내용은 'endforeach' 위에 입력합니다.
<?php echo draggable_element('note_'.$note->getId(), array()) ?>
그리고 아래내용은 파일의 제일 아래쪽에 입력합니다.
<?php echo drop_receiving_element('notepad', array(
  'url' => 'note/translate',
  'with' => "'id='+encodeURIComponent(element.id)+'&x='+element.style.left+'&y='+element.style.top")
) ?>
파일 전체를 다시 살펴보시려면 클릭하십시오.

more..


7. 마지막으로 apps/note/modules/actions/action.class.php 에 'executeTranslate' 을 추가하면 끝입니다.
  public function executeTranslate ()
  {
    $tmp = split('_', $this->getRequestParameter('id', ''));
    $note_id = $tmp[1];
   
    $note = NotePeer::retrieveByPk($note_id);
    $this->forward404Unless($note);

    $note->setId($note_id);
    $note->setX($this->getRequestParameter('x', 0));
    $note->setY($this->getRequestParameter('y', 0));
    $note->setZ($this->getRequestParameter('z', 0));

    $note->save();

    return true;
  }


  1. http://www.symfony-project.com [본문으로]
  2. http://script.aculo.us [본문으로]
  3. http://www.symfony-project.com/book/trunk/project_creation [본문으로]
Posted by 네오미르

티스토리 툴바