Zend verschiedene View-Skripte?

8

Ich habe einen Controller, der Eingaben von einem Formular in eine Modellklasse zur Validierung übergibt. Wenn die Validierung erfolgreich ist, möchte ich dem Fluss erlauben, fortzufahren und die Standardansicht, die dem Controller zugeordnet ist, rendern zu lassen.

Mein Problem ist, dass, wenn die Validierung nicht erfolgreich ist, das Modell Validierungsfehlermeldungen zurückgeben und in einer separaten Ansicht anzeigen soll. Wie kann ich die Fehlermeldungen in der alternativen Ansicht einstellen?

Vielen Dank im Voraus.

    
db83 13.08.2009, 13:34
quelle

4 Antworten

11

Nun können Sie sie vom Controller zu einer anderen Aktion in einem anderen Controller umleiten:

%Vor%

oder Sie rendern nur eine andere Ansichtsdatei:

%Vor%     
Richy B. 13.08.2009 13:40
quelle
9

Verwenden Sie _forward () nicht, wenn Sie auf Aktionen im selben Controller umleiten, rufen Sie einfach die Aktion direkt mit $ this- & gt; fooAction () auf, anstatt diese- & gt; _forward ('foo' ...

Der Grund liegt in der Leistung und den Fehlern, die auftreten können, weil der Controller so konstruiert ist. Wenn Sie _forward aufrufen, wird nicht nur der Predispatch-Lauf erneut ausgeführt (was zu erwarten ist), sondern init (), und der Konstruktor wird ebenfalls erneut aufgerufen. Wenn Sie Ihren Controller von anderen Controllern erweitern, werden alle diese Controller aufgerufen, einschließlich ihrer init (). Wenn Sie Code in Ihrem init () haben, wird es zweimal ausgeführt, und wenn Sie in eine Datenbank schreiben, wird die Zeile zweimal geschrieben! Vermeiden Sie das Ganze und rufen Sie die Aktion direkt auf und verwenden Sie stattdessen $ this- & gt; render ().

Sie können dieses Problem leicht erkennen, wenn Sie Ihren Code profilieren,

    
Dan 06.03.2010 08:29
quelle
4

Warum möchten Sie die Fehlermeldungen in einer anderen Ansicht anzeigen? Warum nicht Bedingungen in die Ansicht einbauen? Etwas wie wenn Form Fehler hat, dann Echo-Nachrichten sonst Echo-Form.

Sie können $ this- & gt; _forward verwenden, um eine andere Aktion mit ihrer jeweiligen Ansicht weiterzuleiten. Sie können weitergeben, was Sie wollen. Übergeben Sie einfach das Formularobjekt, es enthält alle Fehlermeldungen. Oder Sie können bestimmte Fehlermeldungen oder alle von ihnen aus dem Formularobjekt abrufen und sie an eine Ansicht oder eine Aktion übergeben.

    
markus 13.08.2009 13:39
quelle
0

FlashMessenger könnte Teil der Lösung sein? Ссылка

    
Steve 06.10.2009 07:55
quelle