Filter
필터는 컨트롤러 작업이 실행되기 전이나 후에 실행됩니다 개체 . 예를 들어 액세스 제어 필터는 작업이 실행되기 전에 특정 최종 사용자에게 작업을 수행할 수 있는 권한이 있는지 여부를 제어할 수 있고, 콘텐츠 압축 필터는 작업이 실행된 후 응답 콘텐츠를 최종 사용자에게 보내기 전에 압축할 수 있습니다. (권장 학습:yiiframework)
필터에는 사전 필터링(작업 전 필터링 논리) 또는 사후 필터링(작업 후 필터링 논리)이 포함될 수 있습니다. 동시에 두 가지를 모두 포함합니다.
필터 사용
필터는 본질적으로 특별한 유형의 동작이므로 필터를 사용하는 것은 동작을 사용하는 것과 동일합니다. 아래와 같이 컨트롤러 클래스의 동작() 메서드를 재정의하여 필터를 선언할 수 있습니다.
public function behaviors() { return [ [ 'class' => 'yii\filters\HttpCache', 'only' => ['index', 'view'], 'lastModified' => function ($action, $params) { $q = new \yii\db\Query(); return $q->from('user')->max('updated_at'); }, ], ]; }
컨트롤러 클래스의 필터는 기본적으로 클래스의 모든 작업에 적용됩니다. 속성은 컨트롤러가 적용되는 작업을 명시적으로 지정합니다. 위의 예에서 HttpCache 필터는 인덱스 및 보기 작업에만 적용됩니다. 일부 작업이 필터를 실행하지 못하도록 제외 속성을 구성할 수도 있습니다.
컨트롤러 외에도 모듈이나 애플리케이션 본문에서 필터를 선언할 수 있습니다. 선언 후에는 필터의 only 및 Except 속성이 위와 같이 구성되지 않은 한 모듈 또는 애플리케이션 본문에 속하는 모든 컨트롤러 작업에 필터가 적용됩니다.
참고: 모듈이나 애플리케이션 본문에서 필터를 선언할 때 only 및 Except 속성에 작업 ID 대신 경로를 사용하세요. 모듈이나 애플리케이션 본문에서 작업 ID를 사용하는 것만으로는 특정 항목을 고유하게 지정할 수 없기 때문입니다. 행동. .
작업에 여러 개의 필터가 있는 경우 다음 규칙에 따라 순차적으로 실행됩니다.
사전 필터링# #
애플리케이션 본문의 Behaviors()에 나열된 필터를 순서대로 실행합니다. 모듈의behaviors()에 나열된 필터를 순서대로 실행합니다. 컨트롤러에서 Behaviors()에 나열된 필터를 순서대로 실행합니다. 필터가 작업 실행을 종료하면 후속 필터(사전 필터링 및 사후 필터링 포함)가 더 이상 실행되지 않습니다. 사전 필터링을 성공적으로 통과한 후 작업을 실행합니다.사후 필터링
컨트롤러의 동작()에 나열된 필터를 역순으로 실행합니다. 모듈의behaviors()에 나열된 필터를 역순으로 실행합니다. 애플리케이션 본문의 Behaviors()에 나열된 필터를 역순으로 실행합니다.위 내용은 yii 필터가 뭐야?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!