Heim Backend-Entwicklung PHP-Tutorial Detaillierte Erläuterung der Methoden zum Erstellen von Ansichten und Rendern von Ansichten im Yii-Framework von PHP

Detaillierte Erläuterung der Methoden zum Erstellen von Ansichten und Rendern von Ansichten im Yii-Framework von PHP

Feb 06, 2017 pm 05:25 PM

Ansichten sind Teil des MVC-Musters. Es handelt sich um den Code, der Endbenutzern Daten anzeigt. Die Ansichtsvorlage ist eine PHP-Skriptdatei, die hauptsächlich HTML-Code enthält und über die yiiwebView-Anwendungskomponente verwaltet wird , das hauptsächlich generische Methoden bereitstellt, die beim Erstellen und Rendern von Ansichten helfen, nennen wir die Ansichtsvorlage oder Ansichtsvorlagendatei eine Ansicht.

Ansicht erstellen

Wie oben erwähnt, handelt es sich bei der Ansicht um ein PHP-Skript, das HTML und PHP-Code enthält. Sie können sehen, dass der PHP-Code verwendet wird Um dynamische Inhalte wie Seitentitel und Formular zu generieren, organisiert HTML-Code diese in einer schönen HTML-Seite.

<?php
use yii\helpers\Html;
use yii\widgets\ActiveForm;
 
/* @var $this yii\web\View */
/* @var $form yii\widgets\ActiveForm */
/* @var $model app\models\LoginForm */
 
$this->title = &#39;Login&#39;;
?>
<h1><?= Html::encode($this->title) ?></h1>
 
<p>Please fill out the following fields to login:</p>
 
<?php $form = ActiveForm::begin(); ?>
  <?= $form->field($model, &#39;username&#39;) ?>
  <?= $form->field($model, &#39;password&#39;)->passwordInput() ?>
  <?= Html::submitButton(&#39;Login&#39;) ?>
<?php ActiveForm::end(); ?>
Nach dem Login kopieren

In der Ansicht können Sie auf $this zugreifen, um auf yiiwebView zu verweisen und diese Ansichtsdatei zu verwalten und zu rendern.

Zusätzlich zu $this verfügt die Ansicht im obigen Beispiel über weitere vordefinierte Variablen wie $model. Diese Variablen stellen Daten dar, die vom Controller oder anderen Objekten an die Ansicht übergeben werden und das Rendern der Ansicht auslösen.

Tipp: Listen Sie die vordefinierten Variablen im Header-Kommentar der Ansichtsdatei auf, damit sie vom IDE-Editor erkannt werden können. Dies ist auch eine gute Möglichkeit, Ansichtsdokumente zu generieren.
Sicherheit

Beim Erstellen von Ansichten, die HTML-Seiten generieren, ist es wichtig, Benutzereingabedaten vor der Anzeige zu transkodieren und zu filtern, da Ihre Anwendung sonst möglicherweise anfällig für Cross-Site-Scripting-Angriffe ist.

Um einfachen Text anzuzeigen, rufen Sie zunächst yiihelpersHtml::encode() zur Transkodierung auf. Beispielsweise transkodiert der folgende Code den Benutzernamen vor der Anzeige:

<?php
use yii\helpers\Html;
?>
 
<div class="username">
  <?= Html::encode($user->name) ?>
</div>
Nach dem Login kopieren

Um HTML-Inhalte anzuzeigen, rufen Sie zuerst auf yiihelpersHtmlPurifier zum Filtern des Inhalts Der folgende Code filtert beispielsweise den übermittelten Inhalt, bevor er angezeigt wird:

<?php
use yii\helpers\HtmlPurifier;
?>
 
<div class="post">
  <?= HtmlPurifier::process($post->text) ?>
</div>
Nach dem Login kopieren

Tipp: HTMLPurifier leistet gute Arbeit bei der Gewährleistung der Sicherheit der Ausgabedaten, seine Leistung ist jedoch gering nicht gut. Wenn Ihre Anwendung eine hohe Leistung benötigt, sollten Sie die gefilterten Ergebnisse zwischenspeichern.

Ansichten organisieren

Ähnlich wie bei Controllern und Modellen gibt es einige Konventionen zum Organisieren von Ansichten:

Von Controllern gerenderte Ansichtsdateien werden standardmäßig unter @app/views/ControllerID platziert Verzeichnis, wobei ControllerID der Controller-ID entspricht. Die Controller-Klasse ist beispielsweise PostController, das Ansichtsdateiverzeichnis sollte @app/views/post sein und das der Controller-Klasse PostCommentController entsprechende Verzeichnis ist @app/views/post-comment . Wenn es sich in einem Modul-Controller befindet, sollte das Verzeichnis das Verzeichnis „views/ControllerID“ unter dem Modulverzeichnis „yiibaseModule::basePath“ sein.
Für das Widget-Rendering werden die Ansichtsdateien standardmäßig im Verzeichnis „WidgetPath/views“ abgelegt stellt das Verzeichnis dar, in dem sich die Widget-Klassendatei befindet; Für Ansichtsdateien, die von anderen Objekten gerendert werden, wird empfohlen, ähnliche Regeln wie für Widgets zu befolgen.
Sie können die Methode yiibaseViewContextInterface::getViewPath() eines Controllers oder Widgets überschreiben, um das Standardverzeichnis für Ansichtsdateien anzupassen.

Ansicht rendern

Sie können die Methode „Ansicht rendern“ in einem Controller, Widget oder anderswo aufrufen, um eine Ansicht zu rendern. Die Methode ähnelt dem folgenden Format:

/**
 * @param string $view 视图名或文件路径,由实际的渲染方法决定
 * @param array $params 传递给视图的数据
 * @return string 渲染结果
 */
methodName($view, $params = [])
Nach dem Login kopieren
Controller-Rendering im Controller

Im Controller können die folgenden Controller-Methoden aufgerufen werden, um die Ansicht zu rendern:

yiibaseController::render(): Einen Ansichtsnamen rendern und das Rendering zurückgeben Ergebnis anhand eines Layouts.

yiibaseController::renderPartial(): Rendert einen Ansichtsnamen und verwendet kein Layout.

yiiwebController::renderAjax(): Rendert einen Ansichtsnamen ohne Verwendung des Layouts und fügt alle registrierten JS/CSS-Skripte und -Dateien ein, die normalerweise als Antwort auf AJAX-Webanfragen verwendet werden.

yiibaseController::renderFile(): Rendern einer Ansichtsdatei in einem Ansichtsdateiverzeichnis oder Alias.

Zum Beispiel:

namespace app\controllers;
 
use Yii;
use app\models\Post;
use yii\web\Controller;
use yii\web\NotFoundHttpException;
 
class PostController extends Controller
{
  public function actionView($id)
  {
    $model = Post::findOne($id);
    if ($model === null) {
      throw new NotFoundHttpException;
    }
 
    // 渲染一个名称为"view"的视图并使用布局
    return $this->render(&#39;view&#39;, [
      &#39;model&#39; => $model,
    ]);
  }
}
Nach dem Login kopieren
Widget

Ein Widget ist eine Instanz von CWidget oder seiner Unterklasse. Es handelt sich um eine Komponente, die hauptsächlich zur Darstellung von Daten verwendet wird. Widgets werden normalerweise in eine Ansicht eingebettet Um eine komplexe und unabhängige Benutzeroberfläche zu generieren, können Widgets verwendet werden, um die Benutzeroberfläche wiederverwendbar zu machen.

Wir können das folgende Ansichtsskript verwenden, um ein Widget zu verwenden :

<?php $this->beginWidget(&#39;path.to.WidgetClass&#39;); ?>
...可能会由小物件获取的内容主体...
<?php $this->endWidget(); ?>
Nach dem Login kopieren
oder

<?php $this->widget(&#39;path.to.WidgetClass&#39;); ?>
Nach dem Login kopieren
Letzteres wird für Komponenten verwendet, die keinen Textkörperinhalt erfordern. Das

-Widget kann über die Konfiguration angepasst werden Dies geschieht durch Aufrufen von CBaseController::beginWidget oder CBaseController::widget, um den Wert seiner Initialisierungseigenschaft festzulegen. Wenn wir beispielsweise das CMaskedTextField-Widget verwenden, möchten wir die verwendete Maske angeben (kann als Ausgabeformat verstanden werden, Anmerkung des Übersetzers). Tun Sie dies, indem Sie ein Array mit den Initialisierungswerten dieser Eigenschaften übergeben. Der Schlüssel des Arrays ist hier der Name der Eigenschaft, und der Wert des Arrays ist der Wert, der der Eigenschaft des kleinen Objekts entspricht :

<?php
$this->widget(&#39;CMaskedTextField&#39;,array(
  &#39;mask&#39;=>&#39;99/99/9999&#39;
));
?>
Nach dem Login kopieren
CWidget erben und seine init()- und run()-Methoden überschreiben, um ein neues Widget zu definieren:

class MyWidget extends CWidget
{
  public function init()
  {
    // 此方法会被 CController::beginWidget() 调用
  }
  
  public function run()
  {
    // 此方法会被 CController::endWidget() 调用
  }
}
Nach dem Login kopieren
Das Widget kann ein eigenes Widget wie eine Controller-Ansicht haben. Standardmäßig befinden sich die Ansichtsdateien von Widgets im Unterverzeichnis „views“ des Verzeichnisses, das die Widget-Klassendateien enthält. Diese Ansichten können durch Aufrufen von CWidget::render() gerendert werden, was dem Controller sehr ähnlich ist. Die Widget-Ansicht bietet keine Unterstützung für Layoutdateien. Darüber hinaus verweist $this in der Widget-Ansicht auf die Widget-Instanz und nicht auf die Controller-Instanz.

Rendern in einer Ansicht

Sie können eine andere Ansicht in einer Ansicht rendern, indem Sie die folgenden Methoden aufrufen, die von der yiibaseView-Ansichtskomponente bereitgestellt werden:

yiibaseView::render(): Render ein Ansichtsname.

yii\web\View::renderAjax(): 渲染一个 视图名 并注入所有注册的JS/CSS脚本和文件,通常使用在响应AJAX网页请求的情况下。

yii\base\View::renderFile(): 渲染一个视图文件目录或别名下的视图文件。

例如,视图中的如下代码会渲染该视图所在目录下的 _overview.php 视图文件, 记住视图中 $this 对应 yii\base\View 组件:

<?= $this->render(&#39;_overview&#39;) ?>
Nach dem Login kopieren

其他地方渲染

在任何地方都可以通过表达式 Yii::$app->view 访问 yii\base\View 应用组件, 调用它的如前所述的方法渲染视图,例如:

// 显示视图文件 "@app/views/site/license.php"
echo \Yii::$app->view->renderFile(&#39;@app/views/site/license.php&#39;);
Nach dem Login kopieren

更多PHP的Yii框架中创建视图和渲染视图的方法详解相关文章请关注PHP中文网!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Erklären Sie JSON Web Tokens (JWT) und ihren Anwendungsfall in PHP -APIs. Apr 05, 2025 am 12:04 AM

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Wie funktioniert die Session -Entführung und wie können Sie es in PHP mildern? Wie funktioniert die Session -Entführung und wie können Sie es in PHP mildern? Apr 06, 2025 am 12:02 AM

Die Hijacking der Sitzung kann in den folgenden Schritten erreicht werden: 1. Erhalten Sie die Sitzungs -ID, 2. Verwenden Sie die Sitzungs -ID, 3. Halten Sie die Sitzung aktiv. Zu den Methoden zur Verhinderung der Sitzung der Sitzung in PHP gehören: 1. Verwenden Sie die Funktion Session_regenerate_id (), um die Sitzungs -ID zu regenerieren. 2. Store -Sitzungsdaten über die Datenbank, 3. Stellen Sie sicher, dass alle Sitzungsdaten über HTTPS übertragen werden.

Beschreiben Sie die soliden Prinzipien und wie sie sich für die PHP -Entwicklung anwenden. Beschreiben Sie die soliden Prinzipien und wie sie sich für die PHP -Entwicklung anwenden. Apr 03, 2025 am 12:04 AM

Die Anwendung des soliden Prinzips in der PHP -Entwicklung umfasst: 1. Prinzip der Einzelverantwortung (SRP): Jede Klasse ist nur für eine Funktion verantwortlich. 2. Open and Close Principle (OCP): Änderungen werden eher durch Erweiterung als durch Modifikation erreicht. 3.. Lischs Substitutionsprinzip (LSP): Unterklassen können Basisklassen ersetzen, ohne die Programmgenauigkeit zu beeinträchtigen. 4. Schnittstellen-Isolationsprinzip (ISP): Verwenden Sie feinkörnige Schnittstellen, um Abhängigkeiten und nicht verwendete Methoden zu vermeiden. 5. Abhängigkeitsinversionsprinzip (DIP): Hoch- und niedrige Module beruhen auf der Abstraktion und werden durch Abhängigkeitsinjektion implementiert.

Wie setze ich nach dem Neustart des Systems automatisch Berechtigungen von Unixsocket fest? Wie setze ich nach dem Neustart des Systems automatisch Berechtigungen von Unixsocket fest? Mar 31, 2025 pm 11:54 PM

So setzen Sie die Berechtigungen von Unixsocket automatisch nach dem Neustart des Systems. Jedes Mal, wenn das System neu startet, müssen wir den folgenden Befehl ausführen, um die Berechtigungen von Unixsocket: sudo ...

Wie debugge ich den CLI -Modus in PhpStorm? Wie debugge ich den CLI -Modus in PhpStorm? Apr 01, 2025 pm 02:57 PM

Wie debugge ich den CLI -Modus in PhpStorm? Bei der Entwicklung mit PHPSTORM müssen wir manchmal den PHP im CLI -Modus (COMS -Zeilenschnittstellen) debuggen ...

Erklären Sie die späte statische Bindung in PHP (statisch: :). Erklären Sie die späte statische Bindung in PHP (statisch: :). Apr 03, 2025 am 12:04 AM

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Wie sende ich eine Postanforderung mit JSON -Daten mithilfe der Curl -Bibliothek von PHP? Wie sende ich eine Postanforderung mit JSON -Daten mithilfe der Curl -Bibliothek von PHP? Apr 01, 2025 pm 03:12 PM

Senden von JSON -Daten mithilfe der Curl -Bibliothek von PHP in der PHP -Entwicklung müssen häufig mit externen APIs interagieren. Eine der gängigen Möglichkeiten besteht darin, die Curl Library zu verwenden, um Post � ...

See all articles