MAMP 환경에서 cakePHP 환경 구축 [비망록 겸 튜토리얼? ] 제2회
controller 정보
MVC 프레임워크에 대해서는 전회 접했다고 생각하지만, 전부가 전부 필수는 아니다.
model은 DB 접속하지 않으면 필요없고, View에 관해서도 php 함수로 무리하게 화면에 출력되어 버리면 불필요해진다.
그러나, controller에 관해서는 필수로 필요하게 된다.
그래서 controller에서 해간다.
controller는 아래 디렉토리에 .php 파일을 만들면 스크립트가 자동으로 읽어 준다.
app/Controller/
그리고, 작성하는 php 파일에는 명명 규약이 있다.자동으로 읽어내기 위해 이름을 붙이는 규칙이 정해져 있다는 뜻이다.
アプリケーション名Controller.php
이 어플리케이션명이라고 하는 것은 작성하는 「MVC」가 원 세트가 된 프로그램의 덩어리의 일.시도에 sample이라는 응용 프로그램을 만드는 경우
SampleController.php
라는 파일명이 된다.카멜 기법 로 작성을 채용하고 있으므로 대문자 소문자도 이것에 맞추는 것.
액션 정보
컨트롤러는 "일부 액션을 일괄적으로 관리하고 처리하는 것".
「액션」이라고 하는 것은, 이것은 우선 「웹 페이지」의 일이라고, 생각해 두면 k.
즉, 컨트롤러란, 복수의 페이지를 액션이라고 하는 형태로 정리해 관리하는 기능을 하는 것.
예를 들어 간단한 데이터를 관리하는 웹 앱을 생각해 보면,
데이터 추가, 삭제, 편집, 검색 등 다양한 페이지를 준비해야 합니다.
이것들을 한데 모아서 관리하는 것이 controller.
액션에 관해서는 URL로 명시적으로 지정할 수 있다.
http://ドメイン/CakePHPのディレクトリ/アプリケーション/アクション
controller의 클래스 정의
<?php
App::uses('AppController', 'Controller');
class コントローラー名 extends AppController {
public function アクション名() {
……ここに処理を書く……
}
}
최초로 있는 「App::uses」라고 하는 것은, CakePHP에 준비되어 있는 라이브러리를 로드하기 위한 것.
CakePHP에서는 다양한 기능이 준비되어 있어, 이것들을 이용하는 경우에 이것을 사용한다. 쓰는 방법은 이하.
App::uses( クラス名 , パッケージ名 );
컨트롤러 클래스는, Controller 패키지에 있는 「AppController」라고 하는 클래스를 계승해 작성한다.이 때문에, 먼저 App:uses에서 이 클래스를 사용할 수 있도록 해 둔다.
SampleController를 만들어 보자.
<?php
App::uses('AppController', 'Controller');
class SampleController extends AppController {
public function index() {
$this -> autoRender = false;
echo "<html><head></head><body>";
echo "<h1>サンプルページ</h1>";
echo "<p>これがサンプルのページです。</p>";
echo "</body></html>";
}
}
이것을 아래에 배치.
cake/Controller/SampleController.php
저장하면 아래에 액세스.
http://localhost/[cakephpディレクトリ]/sample/
아마 아래와 같은 화면이 표시될 것입니다.본래라면 index 액션에 액세스하려면 「00/sample/index」가 될 것입니다만, CakePHP에서는 index가 디폴트의 액션으로 설정되어 있어, 액션명이 생략되면 자동적으로 index 액션에 액세스한 것으로 간주된다. 이번에 작성한 index 액션의 메소드를 살펴보면 액션 메소드는 다음과 같은 형태로 정의된다. public function 액션 이름 () { ……실행하는 처리… } 인수는 이번에 아무것도 준비되어 있지 않지만 액션에 따라서는 이용하는 경우도 있다(이것은 후술). 실행중인 처리는 기본적으로 echo로 HTML 태그를 내보내는 것만으로 간단한 것. $this -> autoRender = false; 이것의 의미를 해설하면 View는 잡을 수 없다는 것. MVC에서는 표시는 View에 의지하고 있기 때문에, 이번은 View가 아니라는 느낌. 리디렉션 덧붙여서 콘트롤러에 액션 메소드를 준비하면 점점 늘려 갈 수 있거나. 주소를 제대로 지정만 하면 여러 페이지를 준비할 수 있다. 이해해요. <?php App::uses('AppController', 'Controller'); class SampleController extends AppController { public function index() { $this -> autoRender = false; $this->redirect("./other/"); } public function other(){ $this -> autoRender = false; echo "<html><head></head><body>"; echo "<h1>샘플 페이지</h1>"; echo "<p>이것은 또 다른 페이지입니다.</p>"; echo "</body></html>"; } } ※다른 액션에의 포워드 public function index() { $this -> autoRender = false; $this->setAction("other"); } index 액션에 액세스하면 다른 액션으로 리디렉션했을 것입니다. 주소를 보면 /sample/other로 바뀌었을 것입니다. $this->redirect( 주소 ); 이제 리디렉션. 주소만 제대로 지정하면 어느 사이트에도 리디렉션 가능. 포워드 쪽으로 하면 비밀리에 리다이렉트 된 형태가 된다. 값 전달 <?php App::uses('AppController', 'Controller'); class SampleController extends AppController { public function index() { $this -> autoRender = false; $date = new DateTime(); $date->setTimeZone(new DateTimeZone('Asia/Tokyo')); $str = $date->format("H:i:s"); $this->redirect("./other/" . urlencode($str)); } public function other($param){ $this -> autoRender = false; $str = urldecode($param); echo "<html><head></head><body>"; echo "<h1>샘플 페이지</h1>"; echo "<p>이것은 또 다른 페이지입니다.</p>"; echo "<p>전송된 값: " . $str . "</p>"; echo "</body></html>"; } } $this->redirect("./other/" . urlencode($str)); /other/ 뒤에, 건네주고 싶은 값을 URL encode 해 붙이고 있다. public function other($param){…… 받는 측은 인수에 $param이라는 변수를 준비. 복수 전달하고 싶을 때는 아래와 같이 한다. $this->redirect("./other/abc/xyz/123”); ↓ public function other($a, $b, $c){…… 이제 $ a = "abc", $ b = "xyz", $ c = "123"이 유지됩니다. ※Form은 또 후술 마지막으로 이번에는 controller에 대해 썼기 때문에 다음에 View에 대해 씁니다.
Reference
이 문제에 관하여(MAMP 환경에서 cakePHP 환경 구축 [비망록 겸 튜토리얼? ] 제2회), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/street622_ko/items/67f723d4404fcdd41b5c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)