2. 팔콘에서 mvc 생성 의미 (Model, View, Controller)
- PHALCON
- 2018. 12. 21. 15:31
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- RSS 방지선 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
일단, MVC 는 Model, View, Controller의 조합으로 이루어진 웹어플리케이션 모델이다.
팔콘도 MVC 모델로 이루어져 있다.
팔콘에서 처음에 프로젝트를 생성한다.
프로젝트가 생성되면, 해당 프로젝트 안으로 이동하여 phalcon 명령어를 사용할 수 있다.
명렁어는 아래와 같다.
phalcon project 프로젝트이름
Model 은 데이터베이스와 연계되어 생성된다. 명령어는 아래와 같다.
여기서 중요한 것은, app\config\config.php 파일에서, 사용할 DB정보를 미리 지정해줘야 한다는 것이다. 만약 잘못된 정보를 넣어두면 에러메시지가 나오게 될 것이다.
phalcon model DB테이블이름
성공적으로 Model 을 하나 생성하게 되었다면,
해당 파일은 app\models\테이블이름.php 로 생성되어져 있을 것이다.
여기서 중요한 것은, 팔콘의 모델을 생성할때 명명법은 테이블이름.php 로 자동생성된다는 것과, '파스칼' 표기법을 따른 다는 것이다.
파스칼 표기법이란?
- 클래스, 열거형, 이벤트, 함수 이름 표기
- 변수명이 대문자로 시작함
- 복합어일 경우 중간에서 시작하는 새로운 단어는 대문자로 표기
- 예제) UserProfile, Infomation, TestUnit, UserDetailEmail
만약, phalcon model user_info 명령어로 모델을 만들게 된다면,
만들어진 모델파일의 이름은 UserInfo.php 로 생성될 것이다.
Controller 는 Model 과 View 를 중개해주는 역할을 맡는다.
Model 에서 데이터를 가져온다면, 그 데이터를 가공하여, View 에게 전달해준다.
Controller 를 생성하는 명령어는 아래와 같다.
phalcon controller 이름
성공적으로 Controller 를 하나 생성하게 되었다면,
해당 파일은 app\controllers\이름Controller.php 로 생성되어져 있을 것이다.
여기서 Controller 는 무조건 이름뒤에 접미어로 Controller 가 붙게 되어있다.
또한 Model 과 마찬가지로 '파스칼' 표기법을 따른다.
View 는 사용자가 최종적으로 보는 화면을 나타낸다.
View 는 팔콘 명령어로 생성하는 것이 아닌, 직접 폴더구조에 생성해줘야 한다.
생성할 위치는 app\views\뷰이름\index.volt 또는
생성할 위치는 app\views\뷰이름\index.phtml 이다.
View 는 확장자로 volt 또는 phtml 만 사용하도록 한다.
1. 그렇다면, 처음 생성되는 index 페이지말고, 다른 페이지를 하나 만들어보도록 하자.
- 일단 기능없이 페이지 하나만 보여주고 싶다. 어떻게 해야 할까?
- http://localhost 로 접속하게되면, 프로젝트 생성시 자동생성된 화면을 보여준다.
- http://localhost/board 페이지를 일단 보여주게 하고 싶다.
- 간단하다, Controller 만 먼저 생성해 주면 된다.
- phalcon controller board 로 생성해준다.
- http://localhost/board 에 접속하게 되면 에러가 나지 않는 빈화면을 볼 수 있다.
- 그렇다면 간단하게, 'hello world' 를 화면에 보여줘보자.
- app\controllers\BoardController.php 의 내용을 아래와 같이 바꾸어 주자.
- 그리고 나서 다시 화면을 확인해보면 hello world 라고 출력되어져 있을 것이다.
- 그렇다면 여기서 view 파일을 새로 만들어줘보자.
- 만들어야 할 폴더는 app\views\board 이고,
- 만들어야 할 파일은 app\views\board\index.phtml 이다.
- 그리고 만든 index.phtml 을 아래와 같이 수정해주자.
- 그리고나서 다시 localhost/board 에 접속해보자.
- echo 로 출력하던 hello world 는 보이지 않고, 새로만든 index.phtml 화면이 보인다.
- 자, 그렇다면 왜 그럴까?
- BoardController 파일에서 기본적으로 생성된 indexAction() 함수는 Controller 와 이름이 같은 폴더를 Views 폴더내에서 찾아간다.
- 그리고 Action 앞에붙은 index 와 일치하는 파일을 찾아서 화면에 보여주는 것이다.
- 만약 index.phtml 파일을 indexa.phtml 이라는 이름으로 바꾸면, 다시 hello world 만 화면에 보여주는 것을 확인할 수 있을 것이다.
- 그러면 하나 궁금증이 생긴다.
- BoardController.php 파일에서 function 이름만 맞추어 바꾸어주면 되지 않을까?
- 바꾸어 실행해본다. 에러가 날 것이다.
- Action 'index' was not found on handler 'board'
- index Action 을 찾을수 없다, handler board (BoardController.php) 에서.
- indexAction() 함수는 무조건 있어야 하는 기본함수인걸 알 수가 있다.
- 하지만 나는 app\views\board\indexa.phtml 을 보여주고 싶다.
- 어떻게 해야 할까?
- 알아본 바, Controller 단에서만 처리는 불가능하다.
- BoardController -> view(index.phtml) -> BoardController -> view(indexa.phtml)
- 위 순서로만 가능한 것 같다. 그리고 위와 같은 과정이 MVC 모델에 적합하다고 한다.
- 해보자.
- app\controllers\BoardController.php 는 아래와 같다.
- app\views\board\index.phtml 은 아래와 같다.
- app\views\board\indexa.phtml 은 아래와 같다.
- 그리고 localhost/board 에 접속하게 되면 아래와같은화면을 확인할 수 있다.
- 훌륭하게 리턴시켰다.
2. 그렇다면, 웹구조를 아무래도 신경써서 만들어야겠다는 생각이 든다.
- localhost -> localhost/channel 로 자동으로
'PHALCON' 카테고리의 다른 글
1. 팔콘 프로젝트 생성시, 기본 생성되는 파일구조 (0) | 2018.12.20 |
---|