turk porno porno escort rokettube
Ergebnis 1 bis 12 von 12

Thema: FlashMessenger - Problemchen

  1. #1
    N3X
    N3X ist offline
    Neuer Benutzer Avatar von N3X
    Registriert seit
    19.12.2014
    Beiträge
    18
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Standard FlashMessenger - Problemchen

    Moin moin,
    ich habe nach langer Inaktivität hier mal wieder eine Frage. Ich bin gerade dabei eine Anwendung von mir von ZF2 auf ZF3 zu schwenken und nehme dahingehend einige Anpassungen vor für die Migration auf das 3er Framework.

    Nun ist es so, dass ich über einen zusätzlichen Controller-Helper den FlashMessenger befeuer:

    PHP-Code:
    public function addMessages($aMessage$iHop 0){
        foreach(
    $aMessage as $sType => $sMessage){
            
    $this->addMessage($sType$sMessage$iHop);
        }
        return 
    $this;
    }

    public function 
    addMessage($sType$sMessage$iHop 0){
        
    $this->getFlashMessenger()->addMessage($sMessage$sType$iHop);
        return 
    $this;

    Anschließend parse ich die Nachrichten im View mittels des für den FlashMessenger vorgesehenen Plugin:

    PHP-Code:
    $flash $this->flashMessenger();
    //var_dump($flash->getPluginFlashMessenger()->getMessages());
    $flash->setMessageOpenFormat('<div %s role="alert">
             <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
             '
    )
        ->
    setMessageSeparatorString('<br>')
        ->
    setMessageCloseString('</div>');


    echo 
    $flash->render('error',   array('alert''alert-dismissible''alert-danger'));
    echo 
    $flash->render('info',    array('alert''alert-dismissible''alert-info'));
    echo 
    $flash->render('warning', array('alert''alert-dismissible''alert-warning'));
    echo 
    $flash->render('success', array('alert''alert-dismissible''alert-success')); 
    Nun stelle ich bei der Umstellung fest, dass bei der Übergabe der Nachrichten mit einem Hop von 1 die Nachrichten ausgegeben werden, nach einem erneuten Seitenreload (soweit so gut). Wird allerdings ein Hop von 0 übergeben (was bislang in der zweiter Version prächtig funktioniert hat), sollen die Nachrichten beim rendern des Views sofort ausgegeben werden, dies scheint jedoch leider nicht mehr zu funktionieren und es endet letztlich darin, dass keine Ausgaben mehr erfolgen.

    Kennt jemand das Problemchen bereits oder hat ggf. eine Idee woran es liegen könnte?
    Geändert von N3X (31.05.2017 um 09:56 Uhr)
    -----
    Mit freundlichen Grüßen
    Ilya Beliaev

    http://blog.php-dev.info

  2. #2
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.520
    Thanks
    4
    Thanked 356 Times in 287 Posts

    Standard

    Zitat Zitat von N3X Beitrag anzeigen
    Wird allerdings ein Hop von 0 übergeben (was bislang in der zweiter Version prächtig funktioniert hat), sollen die Nachrichten beim rendern des Views sofort ausgegeben werden, dies scheint jedoch leider nicht mehr zu funktionieren und es endet letztlich darin, dass keine Ausgaben mehr erfolgen.
    Ich kann leider dein Ziel nicht erkennen bzw. was möchtest du erreichen? Warum muss es 0 sein?


    Nebensache:
    Zitat Zitat von N3X Beitrag anzeigen
    Nun ist es so, dass ich über einen zusätzlichen Controller-Helper den FlashMessenger befeuer:
    Ein Controller-Plugin ist doch bereits vorhanden?!

    Zitat Zitat von N3X Beitrag anzeigen
    PHP-Code:
    $flash->setMessageOpenFormat('<div %s role="alert">
             <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>
             '
    )
        ->
    setMessageSeparatorString('<br>')
        ->
    setMessageCloseString('</div>'); 
    Kannst du in die Konfiguration verschieben. Beispiel:
    PHP-Code:
    'view_helper_config' => [
        
    // Flash messenger
        
    'flashmessenger' => [
            
    'message_open_format'      => '<div%s>',
            
    'message_close_string'     => '</div>',
            
    'message_separator_string' => '<br>',
        ],
    ], 
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  3. #3
    N3X
    N3X ist offline
    Neuer Benutzer Avatar von N3X
    Registriert seit
    19.12.2014
    Beiträge
    18
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Standard

    Ich kann leider dein Ziel nicht erkennen bzw. was möchtest du erreichen? Warum muss es 0 sein?
    Ich möchte die Meldungen sofort echon, wenn die Controller-Methode abgearbeitet ist und das View gerendert wird. Nicht erst wenn der Controller abgearbeitet ist, beim nächsten manuellen Reload.


    Ein Controller-Plugin ist doch bereits vorhanden?!
    Jup weiß ich, aber ich bin ein Freund von vereinfachen. Das Standard-Controller Plugin bietet keine Möglichkeit um eine Masse an gemischen Nachrichten (namespaces) zu übergeben (luxusproblemchen).


    Kannst du in die Konfiguration verschieben
    Weiß ich, aber da ich eh noch am rumprobieren bin, habe ich das erst einmal gelassen.
    -----
    Mit freundlichen Grüßen
    Ilya Beliaev

    http://blog.php-dev.info

  4. #4
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.520
    Thanks
    4
    Thanked 356 Times in 287 Posts

    Standard

    Zitat Zitat von N3X Beitrag anzeigen
    Ich möchte die Meldungen sofort echon, wenn die Controller-Methode abgearbeitet ist und das View gerendert wird. Nicht erst wenn der Controller abgearbeitet ist, beim nächsten manuellen Reload.
    Das geht doch einfacher: Zend\View\Helper\FlashMessenger::renderCurrent()


    Zitat Zitat von N3X Beitrag anzeigen
    Jup weiß ich, aber ich bin ein Freund von vereinfachen. Das Standard-Controller Plugin bietet keine Möglichkeit um eine Maße an gemischen Nachrichten (namespaces) zu übergeben (luxusproblemchen).
    Ob das eine Vereinfachung ist, würde ich als fraglich bezeichnen. Du hast neuen Code erzeugt, welcher ebenfalls getestet und gewartet werden muss.
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  5. #5
    N3X
    N3X ist offline
    Neuer Benutzer Avatar von N3X
    Registriert seit
    19.12.2014
    Beiträge
    18
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Standard

    RenderCurrent habe ich auch schon probiert. Irgendwas klemmt.

    Zum Thema Wartung und Pflege:
    Es ist mir lieber Sourcecode an einer Stelle pflegen zu müssen, als wenn ich beim hinzufügen der Nachrichten zum Namespace ggf. komplette Klassen abklappern muss (sofern sich Änderungen ergeben) um z.B. Methodennamen anpassen zu müssen o.a.
    Geändert von N3X (31.05.2017 um 13:07 Uhr)
    -----
    Mit freundlichen Grüßen
    Ilya Beliaev

    http://blog.php-dev.info

  6. #6
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.520
    Thanks
    4
    Thanked 356 Times in 287 Posts

    Standard

    Zitat Zitat von N3X Beitrag anzeigen
    RenderCurrent habe ich auch schon probiert. Irgendwas klemmt.
    Dann prüf dies mal.

    Einfaches Beispiel:
    PHP-Code:
    // Error messages
    echo $this->flashMessenger()->renderCurrent(
        
    Zend\Mvc\Controller\Plugin\FlashMessenger::NAMESPACE_ERROR,
        [
            
    'alert-box',
            
    'alert',
        ]
    ); 
    Zitat Zitat von N3X Beitrag anzeigen
    …als wenn ich beim hinzufügen der Nachrichten zum Namespace ggf. komplette Klassen abklappern muss (sofern sich Änderungen ergeben) um z.B. Methodennamen anpassen zu müssen o.a.
    Kann dir leider nicht ganz folgen. Warum willst du etwas ändern?

    Davon mal abgesehen, verstehe ich auch deinen Anwendungsfall nicht:
    Das Standard-Controller Plugin bietet keine Möglichkeit um eine Masse an gemischen Nachrichten (namespaces) zu übergeben
    Wenn etwas erfolgreich war, dann fügt man eine Meldung mit entsprechenden Namespace hinzu. Bei einem Fehler ebenfalls nur eine Meldung und den passenden Namespace.
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  7. #7
    N3X
    N3X ist offline
    Neuer Benutzer Avatar von N3X
    Registriert seit
    19.12.2014
    Beiträge
    18
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Standard

    Hab das Problemchen mittlerweile gefunden. Hab eine Anpassung vergessen zu machen (so einfach kann's sein).

    Stattdessen hab ich allerdings ein anderes Problemchen, alle paar Requests wird mir in einer Action ein transparentes icon gerendert statt dem View.


    Kann dir leider nicht ganz folgen. Warum willst du etwas ändern?
    Ich will nichts ändern, nur bei zukünftigen Änderungen im Framework, oder Fremdbibliotheken muss ich weniger anpassen. Größtes Bsp bei der Migration von ZF2 zu ZF3 ist z.B. der Entfall von EventManager::attach(),
    statt alle Klassen abzuklappern um ggf. Methoden zu ändern brauche ich nur eine Klasse anzufassen. Warum sich das Leben schwer machen und ein komplettes Projekt nach explementierten Methoden absuchen, wenn man sich das Leben einfach machen kann ?


    Davon mal abgesehen, verstehe ich auch deinen Anwendungsfall nicht
    Ich habe gemischte Ergebnisse in meinen Anwendungsfällen, es kann vorkommen, dass mein Array mit den Nachrichten sowohl errors als auch success benachrichtigungen enthalten kann o.a.
    Warum sollte ich jedes mal bei der Verarbeitung von Nachrichten Schleifen redundant implementieren?

    Würde bedeuten, jedes mal wenn ich meine Nachrichten verarbeite um sie an den FlashMessenger zu bringen müsste ich mich im Sourcecode wie folgt wiederholen:

    PHP-Code:
    $aMessages $this->getExampleService()->getMessages();
    foreach(
    $aMessages as $sType => $sMessage){    $this->FlashMessenger()->addMessage($sMessage$sType1);} 
    Dann hätte ich mehrfachen funktionalen Sourcecode redundant in allen Controllern, der Wartungs- & Pflegeaufwand dabei ist doch gerade enormer als eine winzige Funktionalität in einer zentralen Methode/Klasse unterzubringen.
    Nehmen wir an die Methode addMessage würde sich von den Übergabeparametern ändern, wirst du dann durch ein komplettes Projekt gehen um überall dort die Übergabeparameter anzupassen? Bei kleinen Projekten ist der Anpassungsaufwand dann evtl. minimal. Aber wie sieht es bei größeren Projekten aus? Die Einzige Variation die evtl. noch zum Sourcecode iwo auffindbar wäre, wäre das der Übergabeparameter "hop" ggf. von Controller zu Controller sich unterscheidet.

    Aber ansonsten führt es halt zu nicht zwingend notwendiger Sourcecode Redundanz. Vor allem was willst du machen, wenn du z.B. irgendwann auf die Idee kommst Fehlermeldungen mit einem Statuscode zu präfixen oder sonstiges? Durch x Klassen durchgehen und an jeder Stelle eine Anpassung vornehmen?

    Ich hoffe das ist vom Gedanken ausführlich genug.
    Geändert von N3X (31.05.2017 um 16:26 Uhr)
    -----
    Mit freundlichen Grüßen
    Ilya Beliaev

    http://blog.php-dev.info

  8. #8
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.520
    Thanks
    4
    Thanked 356 Times in 287 Posts

    Standard

    Zitat Zitat von N3X Beitrag anzeigen
    Stattdessen hab ich allerdings ein anderes Problemchen, alle paar Requests wird mir in einer Action ein transparentes icon gerendert statt dem View.
    Was für ein „transparentes Icon“? Vom Browser, von der Anwendung oder woher?

    Zitat Zitat von N3X Beitrag anzeigen
    Ich will nichts ändern, nur bei zukünftigen Änderungen im Framework, oder Fremdbibliotheken muss ich weniger anpassen. Größtes Bsp bei der Migration von ZF2 zu ZF3 ist z.B. der Entfall von EventManager::attach(),
    statt alle Klassen abzuklappern um ggf. Methoden zu ändern brauche ich nur eine Klasse anzufassen. Warum sich das Leben schwer machen und ein komplettes Projekt nach explementierten Methoden absuchen, wenn man sich das Leben einfach machen kann ?
    Wenn ich dich richtig verstehe, dann machst du dir das Leben schwer, weil du überall einen Wrapper drumherum setzt. Der „FlashMessenger“ als Beispiel taucht doch nur im Kontroller als Plugin auf und im View-Skript als Helfer (ebenfalls Plugin). Ein Ersetzen geht relativ einfach, da main jeweils nur neue Plugins registrieren muss.
    Tauscht man die Kontroller aus oder verwirft man diese, weil zukünftig auf „Zend Expressive“ gesetzt werden soll, dann ist dies ebenfalls kein Problem, denn von Anfang an sollte auf das Konzept der „Thin Controller“ aufgebaut werden.

    Jetzt kommt das große „Aber“: Plugins austauschen, Kontroller verwerfen, Datenbank-Abstraktionsebene wechseln und ähnliches sind nicht die täglichen Programmierprobleme. Du läufst hier in das Problem, welches mit „Don't Overdesign“ beschrieben werden kann. Konzentriere dich auf aktuelle Problem und nicht auf das was vielleicht in der Zukunft kommen könnte. Ebenfalls kommt hier „YAGNI - You aren't gonna need it“ zum Tragen.

    Das Framework soll deinem eigenen Code nicht im Wege stehen –*soweit stimme ich dir vollkommen zu. Dies heißt aber nicht, dass du alles ummanteln und hinter Fassaden verstecken oder per Proxy aufrufen sollst.

    Ich schlage einfach mal eine andere Variante vor: Warum bringst du deine Ideen, Verbesserungen oder Probleme nicht in das Open-Source-Projekt ein? Immerhin arbeiten und reden wir hier über ein „offenes“ System, was genau davon lebt. Dies könnte nicht nur deinen Code verbessern, sondern auch der vom ZF und alle anderen Anwendungen die ebenfalls darauf aufbauen.

    Zitat Zitat von N3X Beitrag anzeigen
    Ich habe gemischte Ergebnisse in meinen Anwendungsfällen, es kann vorkommen, dass mein Array mit den Nachrichten sowohl errors als auch success benachrichtigungen enthalten kann o.a.

    PHP-Code:
    $aMessages $this->getExampleService()->getMessages(); 
    Was sind das für Meldungen? Kannst du mal konkret werden? (Wieso sind hier gleichzeitig Erfolgs- und Fehlermeldungen enthalten?!)
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  9. #9
    N3X
    N3X ist offline
    Neuer Benutzer Avatar von N3X
    Registriert seit
    19.12.2014
    Beiträge
    18
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Standard

    PHP-Code:
    Was für ein „transparentes Icon“Vom Browservon der Anwendung oder woher
    That is a good Question... Kann ich dir leider nicht konrekt beantworten, ich vermute nicht, dass ich das Icon vom Webbrowser erhalte, da ich dieses Szenario bereits sicherheitshalber in drei unabhängigen Browsern getestet habe.
    Bei weiterer Recherche habe ich herausgefunden, dass das Icon als transparentes Icon (Suche nach Base64-string) verwendet wird.

    HTTP/1.1 200 OKContent-Type: image/gifCache-Control: max-age=300Content-Length: 43

    Base64-Response: R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==
    Wenn ich dich richtig verstehe, dann machst du dir das Leben schwer, weil du überall einen Wrapper drumherum setzt.
    Was nicht ganz richtig ist... Überall ist definitiv übertrieben, aber siehe z.B. bei zend-view. FlashMessenger als Helper für View ist mittlerweile deprecated und soll in der V3 irgendwann mal explementiert werden. Die Änderungen die bei der tatsächlichen Explementierung erfolgen, sind noch recht offen, meiner Ansicht nach.

    Konzentriere dich auf aktuelle Problem und nicht auf das was vielleicht in der Zukunft kommen könnte
    Auch das ist ein berechtiger Punkt, aber ich habe es oftmals schon während der Produktentwicklung erlebt, dass genau solche Kleinigkeiten in größeren CRs ausarten können, die dann nicht mal "ebenso" zu lösen sind. Zudem sprach niemand davon, dass jeder Methodenaufruf hinter ummantelt, hinter Fassaden oder Proxies steckt.

    Es gibt sicher genug Leitsätze die Pro oder Contra sind für ein und das selbe Thema. Ich weiß genau worauf du mit YAGNI hinauszielen willst (so als PO habe ich da auch meine Erfahrungen).

    Ich schlage einfach mal eine andere Variante vor: Warum bringst du deine Ideen, Verbesserungen oder Probleme nicht in das Open-Source-Projekt ein? Immerhin arbeiten und reden wir hier über ein „offenes“ System, was genau davon lebt. Dies könnte nicht nur deinen Code verbessern, sondern auch der vom ZF und alle anderen Anwendungen die ebenfalls darauf aufbauen.
    Jau, da schlägst du ein gutes Kapitel auf. Sicher würde ich mich gerne auch im Open-Source-Projekt einbringen, wenn ich die Zeit dafür hätte.
    Meistens, kennst du sicher selbst, will man sich nach der Arbeit mit so einer Thematik nicht rumschlagen. Dadurch sind bei mir bereits so einige private Projekte zu kurz gekommen. Beruflich bin ich auch eher weniger im Bezug auf ZF (abgesehen vom 1er Framework / 2er im Kontext PIM-Systeme / allg. SAP) unterwegs.
    -----
    Mit freundlichen Grüßen
    Ilya Beliaev

    http://blog.php-dev.info

  10. #10
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.520
    Thanks
    4
    Thanked 356 Times in 287 Posts

    Standard

    Zitat Zitat von N3X Beitrag anzeigen
    Überall ist definitiv übertrieben, aber siehe z.B. bei zend-view. FlashMessenger als Helper für View ist mittlerweile deprecated und soll in der V3 irgendwann mal explementiert werden. Die Änderungen die bei der tatsächlichen Explementierung erfolgen, sind noch recht offen, meiner Ansicht nach.
    Die Änderungen sind eindeutig:

    @deprecated This helper will be removed in version 3.0 of this component.
    At that time, it will be available in zendframework/zend-mvc-plugin-flashmessenger.
    https://github.com/zendframework/zen...senger.php#L19

    Also keine Sorge!
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  11. #11
    Super-Moderator Avatar von Kaiuwe
    Registriert seit
    30.12.2006
    Beiträge
    5.520
    Thanks
    4
    Thanked 356 Times in 287 Posts

    Standard

    Konntest du dein Problem finden?

    Zitat Zitat von N3X Beitrag anzeigen
    Bei weiterer Recherche habe ich herausgefunden, dass das Icon als transparentes Icon (Suche nach Base64-string) verwendet wird.
    Hier würde ich tatsächlich auf den Browser tippen.
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  12. #12
    N3X
    N3X ist offline
    Neuer Benutzer Avatar von N3X
    Registriert seit
    19.12.2014
    Beiträge
    18
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Standard

    Naja mit verschiedenen Browsern habe ich schon getestet. Leider egal in welchem der gleiche Misserfolg. Dem eigentlichen Problem bin ich nun über die Feiertage nicht nachgegangen, eher war ich unterwegs in Schwerin.
    -----
    Mit freundlichen Grüßen
    Ilya Beliaev

    http://blog.php-dev.info

Ähnliche Themen

  1. Flashmessenger & Ajax
    Von -iis- im Forum MVC
    Antworten: 2
    Letzter Beitrag: 11.12.2012, 10:10
  2. FlashMessenger
    Von SiGa im Forum MVC
    Antworten: 34
    Letzter Beitrag: 01.02.2011, 19:37
  3. FlashMessenger()
    Von p-perser im Forum MVC
    Antworten: 8
    Letzter Beitrag: 19.12.2009, 15:37
  4. flashMessenger und _forward()
    Von halla im Forum Einsteigerfragen
    Antworten: 6
    Letzter Beitrag: 21.10.2008, 16:30
  5. FlashMessenger erweitern?
    Von Bleistift im Forum MVC
    Antworten: 2
    Letzter Beitrag: 28.08.2007, 18:21

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •