Yii-액션 사용
컨트롤러 클래스에서 액션을 생성하려면 이름이 action이라는 단어로 시작하는 퍼블릭 메서드를 정의해야합니다. 작업의 반환 데이터는 최종 사용자에게 보낼 응답을 나타냅니다.
Step 1 − hello-world 액션을 정의하겠습니다. ExampleController.
<?php
namespace app\controllers;
use yii\web\Controller;
class ExampleController extends Controller {
public function actionIndex() {
$message = "index action of the ExampleController"; return $this->render("example",[
'message' => $message
]);
}
public function actionHelloWorld() {
return "Hello world!";
}
}
?>
Step 2 − 유형 http://localhost:8080/index.php?r=example/hello-world웹 브라우저의 주소 표시 줄에서. 다음이 표시됩니다.
작업 ID는 일반적으로 만들기, 업데이트, 삭제 등과 같은 동사입니다. 이는 작업이 리소스 인 경우 특정 변경을 수행하도록 설계되는 경우가 많기 때문입니다.
액션 ID는 소문자, 숫자, 하이픈, 밑줄 등의 문자 만 포함해야합니다.
액션에는 인라인과 독립형의 두 가지 유형이 있습니다.
인라인 작업은 컨트롤러 클래스에서 정의됩니다. 액션의 이름은 이런 식으로 액션 ID에서 파생됩니다.
- 작업 ID의 모든 단어에서 첫 글자를 대문자로 바꿉니다.
- 하이픈을 제거하십시오.
- 작업 접두사를 추가합니다.
Examples −
- index는 actionIndex가됩니다.
- hello-world (위의 예에서와 같이)는 actionHelloWorld가됩니다.
다른 위치에서 동일한 작업을 재사용하려는 경우 독립 실행 형 작업으로 정의해야합니다.
독립 실행 형 작업 클래스 만들기
독립 실행 형 액션 클래스를 생성하려면 yii \ base \ Action 또는 자식 클래스를 확장하고 run() 방법.
Step 1− 프로젝트 루트 내에 컴포넌트 폴더를 생성합니다. 그 폴더 안에GreetingAction.php 다음 코드로.
<?php
namespace app\components;
use yii\base\Action;
class GreetingAction extends Action {
public function run() {
return "Greeting";
}
}
?>
재사용 가능한 작업을 방금 만들었습니다. 우리에서 사용하려면ExampleController, action () 메서드를 재정 의하여 액션 맵에서 액션을 선언해야합니다.
Step 2 − 수정 ExampleController.php 이 방법으로 파일을 작성하십시오.
<?php
namespace app\controllers;
use yii\web\Controller;
class ExampleController extends Controller {
public function actions() {
return [
'greeting' => 'app\components\GreetingAction',
];
}
public function actionIndex() {
$message = "index action of the ExampleController";
return $this->render("example",[ 'message' => $message
]);
}
public function actionHelloWorld() {
return "Hello world!";
}
}
?>
그만큼 actions() 메서드는 값이 클래스 이름이고 키가 작업 ID 인 배열을 반환합니다.
Step 3 − 이동 http://localhost:8080/index.php?r=example/greeting. 다음 출력이 표시됩니다.
Step 4− 액션을 사용하여 사용자를 다른 URL로 리디렉션 할 수도 있습니다. 다음 작업을ExampleController.php.
public function actionOpenGoogle() {
// redirect the user browser to http://google.com
return $this->redirect('http://google.com');
}
자, 열면 http://localhost:8080/index.php?r=example/open-google, 다음으로 리디렉션됩니다. http://google.com.
조치 메소드는 조치 매개 변수 라는 매개 변수를 사용할 수 있습니다 . 해당 값은 다음에서 검색됩니다.$_GET 매개 변수 이름을 키로 사용합니다.
Step 5 − 예제 컨트롤러에 다음 작업을 추가합니다.
public function actionTestParams($first, $second) {
return "$first $second";
}
Step 6 − URL 입력 http://localhost:8080/index.php?r=example/testparams&first=hello&second=world 웹 브라우저의 주소 표시 줄에 다음 출력이 표시됩니다.
각 컨트롤러에는 기본 동작이 있습니다. 경로에 컨트롤러 ID 만 포함 된 경우 기본 작업이 요청됨을 의미합니다. 기본적으로 작업은index. 컨트롤러에서이 속성을 쉽게 재정의 할 수 있습니다.
Step 7 − 수정 ExampleController 이 방법.
<?php
namespace app\controllers;
use yii\web\Controller;
class ExampleController extends Controller {
public $defaultAction = "hello-world";
/* other actions */
}
?>
Step 8 − 이제 다음으로 이동하면 http://localhost:8080/index.php?r=example, 다음이 표시됩니다.
요청을 수행하기 위해 컨트롤러는 다음 수명주기를 거칩니다.
yii \ base \ Controller :init() 메서드가 호출됩니다.
컨트롤러는 작업 ID를 기반으로 작업을 만듭니다.
컨트롤러는 순차적으로 beforeAction() 웹 애플리케이션, 모듈 및 컨트롤러의 방법.
컨트롤러가 작업을 실행합니다.
컨트롤러는 순차적으로 afterAction() 웹 애플리케이션, 모듈 및 컨트롤러의 방법.
애플리케이션은 응답에 조치 결과를 할당합니다.
중요 사항
컨트롤러는-
- 매우 얇습니다. 각 작업에는 몇 줄의 코드 만 포함되어야합니다.
- 응답을 위해보기를 사용하십시오.
- HTML을 포함하지 마십시오.
- 요청 데이터에 액세스하십시오.
- 모델의 호출 방법.
- 요청 데이터를 처리하지 않습니다. 이들은 모델에서 처리되어야합니다.