In diesem Kapitel wird beschrieben, wie Sie eine neue „Hallo“-Seite in Ihrer Anwendung erstellen. Um dieses Ziel zu erreichen, werden eine Aktion und eine Ansicht erstellt:
Die Anwendung sendet die Seitenanforderung an die Aktion (empfohlenes Lernen: yii-Tutorial)
Die Aktion rendert wiederum die Ansicht, die dem Endbenutzer „Hallo“ präsentiert
In diesem Kapitel werden Sie drei Dinge beherrschen:
Wie man eine erstellt Aktion zum Reagieren auf Anfragen,
wie man eine Ansicht zum Erstellen von Antwortinhalten erstellt,
und wie eine Anwendung Anfragen an Aktionen weiterleitet.
Aktion erstellen
Für „Hallo“ müssen Sie eine Sag-Aktion erstellen, die den Nachrichtenparameter aus der Anfrage empfängt und ihn dem Endbenutzer anzeigt. Wenn die Anfrage keinen Nachrichtenparameter bereitstellt, zeigt der Vorgang den Standardparameter „Hallo“ an.
信息: 操作是最终用户可以直接访问并执行的对象。 操作被组织在控制器中。 一个操作的执行结果就是最终用户收到的响应内容。
Die Aktion muss im Controller deklariert werden. Der Einfachheit halber können Sie die Say-Aktion direkt im SiteController-Controller deklarieren. Dieser Controller wird durch die Datei controllers/SiteController.php definiert. Hier ist die Deklaration einer Aktion:
<?php namespace app\controllers; use yii\web\Controller; class SiteController extends Controller { // ...现存的代码... public function actionSay($message = 'Hello') { return $this->render('say', ['message' => $message]); } }
Im obigen SiteController-Code ist die Say-Aktion als actionSay-Methode definiert. Yii verwendet das Aktionspräfix, um gewöhnliche Methoden von Operationen zu unterscheiden. Der Name, der dem Aktionspräfix folgt, wird der ID der Aktion zugeordnet.
Wenn es um die Benennung von Vorgängen geht, sollten Sie verstehen, wie Yii mit Vorgangs-IDs umgeht. Operations-IDs werden immer in Kleinbuchstaben behandelt. Wenn eine Operations-ID aus mehreren Wörtern besteht, werden die Wörter durch Bindestriche verbunden (z. B. „create-comment“).
Wenn die Operations-ID dem Methodennamen zugeordnet wird, werden Bindestriche entfernt, der erste Buchstabe jedes Wortes großgeschrieben und das Aktionspräfix hinzugefügt. Beispiel: Die Aktions-ID create-comment entspricht dem Methodennamen actionCreateComment.
Die Aktionsmethode im obigen Code akzeptiert einen Parameter $message, dessen Standardwert „Hallo“ ist (genau wie Sie den Standardwert anderer Funktionen oder Methoden in PHP festlegen). Wenn die Anwendung die Anfrage empfängt und feststellt, dass die Say-Operation auf die Anfrage antwortet, findet die Anwendung den entsprechenden Wert aus den Anfrageparametern und übergibt ihn.
Mit anderen Worten: Wenn die Anfrage einen Nachrichtenparameter enthält, dessen Wert „Goodbye“ ist, wird die Variable $message in der Aktionsmethode auch mit „Goodbye“ gefüllt.
In der Operationsmethode wird render() verwendet, um eine Ansichtsdatei mit dem Namen say zu rendern. Der Nachrichtenparameter wird auch an die Ansicht übergeben, sodass er darin verwendet werden kann. Die Aktionsmethode gibt das Rendering-Ergebnis zurück. Die Ergebnisse werden von der Anwendung empfangen und im Browser des Endbenutzers angezeigt (als Teil des ganzseitigen HTML-Codes).
Ansichten erstellen
Ansichten sind Skripte, die Sie zum Generieren von Antwortinhalten verwenden. Um „Hallo“ zu sagen, müssen Sie eine Sagenansicht erstellen, die den von der Aktionsmethode übergebenen Nachrichtenparameter anzeigt.
<?php use yii\helpers\Html; ?> <?= Html::encode($message) ?>
Angenommen, Ansichten sollten als Datei „views/site/say.php“ gespeichert werden. Wenn die render()-Methode in einer Operation aufgerufen wird, lädt sie die PHP-Datei entsprechend dem Pfad „views/controller ID/view name.php“.
Beachten Sie, dass im obigen Code der Nachrichtenparameter vor der Ausgabe von der HTML-codierten Methode verarbeitet wird. Dies ist notwendig, da schädlicher JavaScript-Code, der möglicherweise in den Parametern versteckt ist, zu Cross-Site-Scripting-Angriffen (XSS) führen kann, wenn die Parameter vom Endbenutzer stammen.
Natürlich werden Sie wahrscheinlich mehr Inhalte in die Say-Ansicht einfügen. Inhalte können aus HTML-Tags, reinem Text oder sogar PHP-Anweisungen bestehen. Tatsächlich handelt es sich bei der Say-Ansicht um ein PHP-Skript, das von render() ausgeführt wird. Der vom View-Skript ausgegebene Inhalt wird als Antwortergebnis an die Anwendung zurückgegeben. Die Anwendung wiederum gibt die Ergebnisse an den Endbenutzer aus.
Try Run
Nachdem Sie die Aktion und Ansicht erstellt haben, können Sie über die folgende URL auf die neue Seite zugreifen:
http://hostname/index.php?r=site/say&message=Hello+World
Diese URL gibt eine Seite mit „Hello World“ aus und verwendet denselben Header und Trailer wie andere Seiten in der Anwendung.
Wenn Sie den Nachrichtenparameter in der URL weglassen, werden Sie sehen, dass auf der Seite nur „Hallo“ angezeigt wird. Dies liegt daran, dass die Nachricht als Parameter an die Methode actionSay() übergeben wird und wenn sie weggelassen wird, wird stattdessen der Standardparameter „Hello“ verwendet.
信息: 新页面和其它页面使用同样的头部和尾部是因为 render() 方法会自动把 say 视图执行的结果嵌入称为布局的文件中, 本例中是 views/layouts/main.php。
Der Parameter r in der URL oben bedarf weiterer Erklärung. Es stellt eine Route dar, bei der es sich um eine unabhängige ID auf der gesamten Anwendungsebene handelt, die auf einen bestimmten Vorgang verweist. Das Routingformat ist Controller-ID/Operations-ID. Wenn die Anwendung eine Anfrage akzeptiert, überprüft sie die Parameter und ermittelt anhand der Controller-ID, welcher Controller für die Bearbeitung der Anfrage verwendet werden soll. Der entsprechende Controller ermittelt dann anhand der Aktions-ID, mit welcher Aktionsmethode die jeweilige Arbeit ausgeführt wird.
Im obigen Beispiel wird die Route site/say zum SiteController-Controller und der darin enthaltenen say-Operation aufgelöst. Daher wird die SiteController::actionSay()-Methode aufgerufen, um die Anfrage zu bearbeiten.
信息: 与操作一样,一个应用中控制器同样有唯一的 ID。 控制器 ID 和操作 ID 使用同样的命名规则。 控制器的类名源自于控制器 ID, 移除了连字符,每个单词首字母大写,并加上 Controller 后缀。 例子:控制器 ID post-comment 相当于控制器类名 PostCommentController
Das obige ist der detaillierte Inhalt vonSo erstellen Sie eine Hallo-Seite mit dem YII-Framework. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!