Heim Backend-Entwicklung PHP-Tutorial Über den Code zur Verwendung eines modalen Popup-Fensters in Kombination mit Gridview in yii2

Über den Code zur Verwendung eines modalen Popup-Fensters in Kombination mit Gridview in yii2

Jun 15, 2018 pm 02:46 PM
modal yii2

In diesem Artikel werden hauptsächlich relevante Informationen zur Verwendung modaler Popup-Fenster in Yii2 in Kombination mit Gridview vorgestellt.

Im vorherigen Artikel habe ich die Verwendung modaler Popups vorgestellt -up-Fenster in Yii2 (Grundlegende Verwendung), nehmen Sie die Erstellung als Beispiel.

In der tatsächlichen Entwicklung stoßen wir häufig auf Situationen, in denen Modal zum Ändern der Daten auf der Listenseite verwendet wird. Wenn es sich um eine allgemeine Schleifenanzeige handelt, können die meisten Leute sie meines Erachtens bedienen, nachdem sie die grundlegende Verwendung von Modal gesehen haben. Aber in Kombination mit Gridview wird es geschätzt. Einige Leute können es einfach nicht mehr ertragen. Mal sehen, wie wir dieses Problem lösen können!

1. Fügen Sie der Gridview-Operation eine Schaltfläche [Aktualisieren] hinzu und geben Sie den Wert der Datenzielklasse und der Daten-ID an

[
'class' => 'yii\grid\ActionColumn',
'template' => '{update}', 
'buttons' => [
'update' => function ($url, $model, $key) {
return Html::a('更新', '#', [
'data-toggle' => 'modal',
'data-target' => '#update-modal',
'class' => 'data-update',
'data-id' => $key,
]);
},
],
],
Nach dem Login kopieren

2. Modal für Aktualisierung hinzufügen

<?php 
use yii\bootstrap\Modal;
// 更新操作
Modal::begin([
&#39;id&#39; => &#39;update-modal&#39;,
&#39;header&#39; => &#39;<h4 class="modal-title">更新</h4>&#39;,
&#39;footer&#39; => &#39;<a href="#" class="btn btn-primary" data-dismiss="modal">Close</a>&#39;,
]); 
$requestUpdateUrl = Url::toRoute(&#39;update&#39;);
$updateJs = <<<JS
$(&#39;.data-update&#39;).on(&#39;click&#39;, function () {
$.get(&#39;{$requestUpdateUrl}&#39;, { id: $(this).closest(&#39;tr&#39;).data(&#39;key&#39;) },
function (data) {
$(&#39;.modal-body&#39;).html(data);
} 
);
});
Nach dem Login kopieren

JS;

$this->registerJs($updateJs);
Modal::end();
?>
Nach dem Login kopieren

3. Ändern Sie unsere Aktualisierungsmethode

public function actionUpdate($id)
{
$model = $this->findModel($id);
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect([&#39;index&#39;]);
} else {
return $this->renderAjax(&#39;update&#39;, [
&#39;model&#39; => $model,
]);
}
}
Nach dem Login kopieren

Es ist ersichtlich, dass sich der gesamte Prozess nicht von der zuvor erwähnten grundlegenden Verwendung von Modal unterscheidet. Aber es ist noch nicht vorbei. Ich glaube, dass die meisten Menschen auf die folgenden häufigen Probleme stoßen, die schwer zu lösen sind:

Select2 wird im yii2-Modal verwendet ?

yii2 Mehrere Modalitäten auf einer einzigen Seite. Warum teilen sich die Seiten eine Seite und warten, bis die Daten geladen sind?

yii2 Eine einzelne Seite hat mehrere Modalitäten, wenn Sie oben eine einzelne Seite hinzufügen und die Rasteransicht aktualisieren. Warum wird die aktualisierte Auswahl2 ungültig und unwirksam?

Sehen wir uns an, wie Sie diese Probleme einzeln lösen können:

Zunächst müssen Sie für die erste Frage nur den Tabindex der Optionsoption angeben, wenn modale Verwendungen beginnen. Setzen Sie es einfach auf „false“, siehe Folgendes:

Modal::begin([
// ......
&#39;options&#39; => [
&#39;tabindex&#39; => false 
],
]);
Nach dem Login kopieren

Das zweite und dritte Problem werden durch die Verwendung mehrerer Modalitäten auf einer einzelnen Seite verursacht. Um das Problem zu veranschaulichen, verwenden wir modal sowohl in der Schaltfläche [Erstellen] in einer Liste als auch in der Schaltfläche [Aktualisieren] in der Rasteransicht. Gemäß der Verwendung modaler Popups in Yii2 (grundlegende Verwendung) und diesem Artikel wird das erste Problem offensichtlich durch

$(&#39;.modal-body&#39;).html(data);
Nach dem Login kopieren

verursacht Nachdem wir das Modal zum ersten Mal verwendet haben, werden den Körpern aller Modals Werte zugewiesen, sodass bei späterer Verwendung anderer Modalitäten derselbe Inhalt angezeigt wird, bevor die Daten angefordert werden. Um dieses Problem zu lösen, müssen Sie dem jeweiligen Modal-Body lediglich nach jeder asynchronen Anfrage einen separaten Wert zuweisen. Der Code kann wie folgt bezeichnet werden:

$('#create').on('click', function () {
$.get('url', {},
function (data) {
$('#create-modal').find('.modal-body').html(data);
// $(&#39;.modal-body&#39;).html(data);
} 
);
});
$('.data-update').on('click', function () {
$.get('{$requestUpdateUrl}', { id: $(this).closest('tr').data('key') },
function (data) {
$('#update-modal').find('.modal-body').html(data);
// $(&#39;.modal-body&#39;).html(data);
} 
);
});
Nach dem Login kopieren

Siehe letzte Frage. Schüler, die select2 verwendet haben, sollten aufpassen! ! !

Wenn das Formular, wie im in diesem Thema vorgestellten Beispiel, „select2“ enthält, führt dies dazu, dass das Feld „select2“ nur während der Operation [Erstellen] normal ist und das Feld „select2“ während der Operation [ Update]-Vorgang!

Dies wird tatsächlich durch die ID verursacht, die demselben select2 auf derselben Seite entspricht. Um dieses Problem zu lösen, müssen Sie nur alle vorhandenen Formularelemente auf der Seite vor jeder asynchronen Datenanforderung entfernen. Schauen Sie sich die spezifische Implementierung an:

$(&#39;#create&#39;).on(&#39;click&#39;, function () {
// 有效避免multiply modal select2的问题
// 移除异步加载过来的form表单
$(&#39;.document-nav-form&#39;).remove();
$.get(&#39;{$requestUrl}&#39;, {},
function (data) {
$(&#39;#create-modal&#39;).find(&#39;.modal-body&#39;).html(data);
} 
);
});
$(&#39;.data-update&#39;).on(&#39;click&#39;, function () {
// 有效避免multiply modal select2的问题
// 移除异步加载过来的form表单
$(&#39;.document-nav-form&#39;).remove();
$.get(&#39;{$requestUpdateUrl}&#39;, { id: $(this).closest(&#39;tr&#39;).data(&#39;key&#39;) },
function (data) {
$(&#39;#update-modal&#39;).find(&#39;.modal-body&#39;).html(data);
} 
);
});
Nach dem Login kopieren

Das Obige ist der gesamte Inhalt dieses Artikels, der für das Lernen aller hilfreich sein wird. Bitte achten Sie auf die chinesische PHP-Website!

Verwandte Empfehlungen:

Über Yiis Modellabfrage basierend auf Arrays und Objekten

Yii und CKEditor implementieren die Bild-Upload-Funktion

So durchsuchen Sie mehrere Felder gleichzeitig in Yii2

Das obige ist der detaillierte Inhalt vonÜber den Code zur Verwendung eines modalen Popup-Fensters in Kombination mit Gridview in yii2. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

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)

Arbeiten mit Flash -Sitzungsdaten in Laravel Arbeiten mit Flash -Sitzungsdaten in Laravel Mar 12, 2025 pm 05:08 PM

Laravel vereinfacht die Behandlung von temporären Sitzungsdaten mithilfe seiner intuitiven Flash -Methoden. Dies ist perfekt zum Anzeigen von kurzen Nachrichten, Warnungen oder Benachrichtigungen in Ihrer Anwendung. Die Daten bestehen nur für die nachfolgende Anfrage standardmäßig: $ Anfrage-

Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Curl in PHP: So verwenden Sie die PHP -Curl -Erweiterung in REST -APIs Mar 14, 2025 am 11:42 AM

Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests Vereinfachte HTTP -Reaktion verspottet in Laravel -Tests Mar 12, 2025 pm 05:09 PM

Laravel bietet eine kurze HTTP -Antwortsimulationssyntax und vereinfache HTTP -Interaktionstests. Dieser Ansatz reduziert die Code -Redundanz erheblich, während Ihre Testsimulation intuitiver wird. Die grundlegende Implementierung bietet eine Vielzahl von Verknüpfungen zum Antworttyp: Verwenden Sie Illuminate \ Support \ facades \ http; Http :: fake ([ 'Google.com' => 'Hallo Welt',, 'github.com' => ['foo' => 'bar'], 'Forge.laravel.com' =>

12 Beste PHP -Chat -Skripte auf Codecanyon 12 Beste PHP -Chat -Skripte auf Codecanyon Mar 13, 2025 pm 12:08 PM

Möchten Sie den dringlichsten Problemen Ihrer Kunden in Echtzeit und Sofortlösungen anbieten? Mit Live-Chat können Sie Echtzeitgespräche mit Kunden führen und ihre Probleme sofort lösen. Sie ermöglichen es Ihnen, Ihrem Brauch einen schnelleren Service zu bieten

Erklären Sie das Konzept der späten statischen Bindung in PHP. Erklären Sie das Konzept der späten statischen Bindung in PHP. Mar 21, 2025 pm 01:33 PM

In Artikel wird die in PHP 5.3 eingeführte LSB -Bindung (LSB) erörtert, die die Laufzeitauflösung der statischen Methode ermöglicht, um eine flexiblere Vererbung zu erfordern. Die praktischen Anwendungen und potenziellen Perfo von LSB

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.

Rahmensicherheitsmerkmale: Schutz vor Schwachstellen. Rahmensicherheitsmerkmale: Schutz vor Schwachstellen. Mar 28, 2025 pm 05:11 PM

In Artikel werden wichtige Sicherheitsfunktionen in Frameworks erörtert, um vor Schwachstellen zu schützen, einschließlich Eingabevalidierung, Authentifizierung und regelmäßigen Aktualisierungen.

See all articles