이 장에서는 애플리케이션에서 새로운 "Hello" 페이지를 만드는 방법을 설명합니다. 이 목표를 달성하기 위해 액션과 뷰가 생성됩니다:
애플리케이션은 페이지 요청을 액션에 전달합니다(권장 학습: yii 튜토리얼)
액션은 차례로 뷰를 렌더링하여 "Hello"를 표시합니다. "를 최종 사용자에게
이 장 전체에서 세 가지를 배우게 됩니다:
요청에 응답하는 작업을 만드는 방법,
응답 콘텐츠를 구성하기 위한 뷰를 만드는 방법,
애플리케이션이 어떻게 작업에 요청을 전달합니다.
액션 생성
"Hello"의 경우 요청에서 메시지 매개변수를 수신하여 최종 사용자에게 표시하는 Say 액션을 생성해야 합니다. 요청이 메시지 매개변수를 제공하지 않는 경우 작업은 기본 매개변수 "Hello"를 표시합니다.
信息: 操作是最终用户可以直接访问并执行的对象。 操作被组织在控制器中。 一个操作的执行结果就是最终用户收到的响应内容。
액션은 컨트롤러에서 선언되어야 합니다. 단순화를 위해 SiteController 컨트롤러에서 직접 say 작업을 선언할 수 있습니다. 이 컨트롤러는 Controllers/SiteController.php 파일에 의해 정의됩니다. 다음은 작업 선언입니다.
<?php namespace app\controllers; use yii\web\Controller; class SiteController extends Controller { // ...现存的代码... public function actionSay($message = 'Hello') { return $this->render('say', ['message' => $message]); } }
위의 SiteController 코드에서 say 작업은 actionSay 메서드로 정의됩니다. Yii는 작업 접두사를 사용하여 일반 메서드와 작업을 구별합니다. 작업 접두사 뒤에 오는 이름은 작업의 ID에 매핑됩니다.
작업 이름 지정과 관련하여 Yii가 작업 ID를 처리하는 방법을 이해해야 합니다. 작업 ID는 항상 소문자로 처리됩니다. 작업 ID가 여러 단어로 구성된 경우 해당 단어는 하이픈으로 연결됩니다(예: create-comment).
작업 ID가 메서드 이름에 매핑되면 하이픈이 제거되고 각 단어의 첫 글자가 대문자로 표시되며 작업 접두사가 추가됩니다. 예: 작업 ID create-comment는 메서드 이름 actionCreateComment와 동일합니다.
위 코드의 작업 메서드는 기본값이 "Hello"인 $message 매개변수를 허용합니다(PHP에서 다른 함수나 메서드의 기본값을 설정하는 것과 같습니다). 애플리케이션이 요청을 수신하고 say 작업이 요청에 응답할 것이라고 판단하면 애플리케이션은 요청 매개변수에서 해당 값을 찾아서 전달합니다.
즉, 요청에 메시지 매개변수가 포함되어 있고 해당 값이 "Goodbye"인 경우 작업 메서드의 $message 변수도 "Goodbye"로 채워집니다.
작업 메서드에서 render()를 사용하여 say라는 뷰 파일을 렌더링합니다. 메시지 매개변수도 뷰에 전달되어 내부에서 사용할 수 있습니다. 작업 메서드는 렌더링 결과를 반환합니다. 결과는 애플리케이션에 의해 수신되고 최종 사용자의 브라우저에 전체 페이지 HTML의 일부로 표시됩니다.
뷰 만들기
뷰는 응답 콘텐츠를 생성하는 데 사용하는 스크립트입니다. "안녕하세요"라고 말하려면 액션 메소드에서 전달된 메시지 매개변수를 표시하는 Say 뷰를 생성해야 합니다.
<?php use yii\helpers\Html; ?> <?= Html::encode($message) ?>
say 뷰는 views/site/say.php 파일로 저장해야 합니다. 작업에서 render() 메서드가 호출되면 views/controller ID/view name.php 경로에 따라 PHP 파일을 로드합니다.
위 코드에서 message 매개변수는 출력 전에 HTML 인코딩 방식으로 처리됩니다. 이는 매개변수가 최종 사용자로부터 제공되는 경우 매개변수에 숨겨져 있을 수 있는 악성 JavaScript 코드가 XSS(교차 사이트 스크립팅) 공격으로 이어질 수 있기 때문에 필요합니다.
물론, 아마도 Say View에 더 많은 콘텐츠를 넣을 것입니다. 콘텐츠는 HTML 태그, 일반 텍스트 또는 PHP 문으로 구성될 수 있습니다. 실제로 say 뷰는 render()에 의해 실행되는 PHP 스크립트입니다. 뷰 스크립트에 의해 출력된 콘텐츠는 응답 결과로 애플리케이션에 반환됩니다. 그러면 애플리케이션은 결과를 최종 사용자에게 출력합니다.
시험 실행
액션과 뷰를 생성한 후 다음 URL을 통해 새 페이지에 액세스할 수 있습니다.
http://hostname/index.php?r=site/say&message=Hello+World
이 URL은 "Hello World"가 포함된 페이지, 페이지 및 애플리케이션을 출력합니다. 다른 페이지에서 사용하는 동일한 헤더와 트레일러.
URL에서 메시지 매개변수를 생략하면 페이지에 "Hello"만 표시되는 것을 볼 수 있습니다. 이는 message가 actionSay() 메서드에 매개변수로 전달되는데, 생략할 경우 기본 "Hello" 매개변수가 대신 사용되기 때문입니다.
信息: 新页面和其它页面使用同样的头部和尾部是因为 render() 方法会自动把 say 视图执行的结果嵌入称为布局的文件中, 本例中是 views/layouts/main.php。
위 URL의 r 매개변수에 대해서는 추가 설명이 필요합니다. 이는 특정 작업을 가리키는 전체 애플리케이션 수준의 독립적인 ID인 경로를 나타냅니다. 라우팅 형식은 컨트롤러 ID/작업 ID입니다. 애플리케이션이 요청을 수락하면 매개변수를 확인하고 컨트롤러 ID를 사용하여 요청을 처리하는 데 사용해야 하는 컨트롤러를 결정합니다. 그런 다음 해당 컨트롤러는 작업 ID를 사용하여 특정 작업을 수행하는 데 사용할 작업 방법을 결정합니다.
위의 예에서 site/say 경로는 SiteController 컨트롤러와 그 안의 say 작업으로 확인됩니다. 따라서 요청을 처리하기 위해 SiteController::actionSay() 메서드가 호출됩니다.
아아아아위 내용은 yii 프레임워크를 사용하여 Hello 페이지를 만드는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!