turk porno porno escort rokettube
Ergebnis 1 bis 7 von 7

Thema: Kapitel 8.5.3: Finish-Event - Anpassung HTML Header

  1. #1
    Erfahrener Benutzer
    Registriert seit
    05.09.2008
    Beiträge
    321
    Thanks
    0
    Thanked 3 Times in 1 Post

    Standard Kapitel 8.5.3: Finish-Event - Anpassung HTML Header

    Ich habe das Beispiel, so angepasst, dass bei mir, der HTML Header um text/html; charset=utf-8 ergänzt wird.

    Dies funktioniert aber nur so:
    PHP-Code:
      namespace Application\Listener;

      use 
    Zend\EventManager\EventManagerInterface;
      use 
    Zend\EventManager\ListenerAggregateInterface;
      use 
    Zend\Mvc\MvcEvent;

      class 
    HTMLListener implements ListenerAggregateInterface
      
    {
        protected 
    $_aListeners = array();

        public function 
    attach(EventManagerInterface $oEvents)
        {
          
    $this->_aListeners[] = $oEvents->attach(MvcEvent::EVENT_FINISH, array($this'html'), 500);
        }

        public function 
    detach(EventManagerInterface $oEvents)
        {
          foreach (
    $this->_aListeners as $iIndex => $mListener)
          {
            if (
    $oEvents->detach($mListener))
            {
              unset(
    $this->_aListeners[$iIndex]);
            }
          }
        }

        public function 
    html(MvcEvent $oEvent)
        {
          
    $oResponse $oEvent->getApplication()->getResponse();

          
    $oResponse->setContent(str_replace('</head>''<meta http-equiv="content-type" content="text/html; charset=utf-8" /></head>'$oResponse->getBody()));
        }
      } 
    Aber warum funktioniert es nicht auch so:
    PHP-Code:
    public functio html(MvcEvent $oEvent)
    {
        
    $response $oEvent->getResponse();
        
    $header = new \Zend\Http\Header\ContentType();
        
    $header->value 'text/html; charset=utf-8';
        
    $response->getHeaders()->addHeader($header);

    Ich erhalte im HTML keinen solchen Wert angezeigt.

    Mit dieser Funktionalität hat es aber in der onBootstrap() als Closure-Funktion geklappt.

    Wo ist mein Fehler?

  2. #2
    Erfahrener Benutzer Avatar von Ralf
    Registriert seit
    14.12.2006
    Beiträge
    450
    Thanks
    0
    Thanked 47 Times in 37 Posts

    Standard

    Hallo,

    deine html() Methode wird zwar vor dem MvcEvent::EVENT_FINISH aufgerufen, aber zu dem Zeitpunkt ist das Rendern des Views schon abgeschlossen. Deshalb kommst du nur mit einem Replace auf dem gerenderten HTML Output zum Ziel. Wenn du das Ganze über das Response Objekt abwickeln möchtest, dann muss dies VOR dem MvcEvent::EVENT_RENDER Event passieren. Dann sollte es klappen.

    Gruß,

    Ralf

  3. #3
    Erfahrener Benutzer
    Registriert seit
    05.09.2008
    Beiträge
    321
    Thanks
    0
    Thanked 3 Times in 1 Post

    Standard

    Leider funktioniert es nicht. Habe jetzt das Event auf Dispatch gestellt.

    Aber der Code scheint nicht zu funktioneren, da ich keine Ausgabe erhalte:

    PHP-Code:
          $oResponse $oEvent->getApplication()->getResponse();

          
    $oContentType = new ContentType();
          
    $oContentType->value 'text/html; charset=utf-8';

          
    $oHeader $oResponse->getHeaders();

          
    $oHeader->addHeader($oContentType); 

  4. #4
    Erfahrener Benutzer Avatar von Ralf
    Registriert seit
    14.12.2006
    Beiträge
    450
    Thanks
    0
    Thanked 47 Times in 37 Posts

    Standard

    Moin,

    ob ein dein eigentlicher Code überhaupt läuft, hatte ich nicht genauer betrachtet. Schau dir mal diesen Link und da speziell den Listener an. Da wird auch der Content-type Header verändert. Musst du also anpassen.

    Zend Framework 2 : Step by Step Create Custom View Strategy | Welcome to Abdul Malik Ikhsan's Blog

    Hilft das weiter?

    Gruß,

    Ralf

  5. #5
    Erfahrener Benutzer
    Registriert seit
    05.09.2008
    Beiträge
    321
    Thanks
    0
    Thanked 3 Times in 1 Post

    Standard

    Ich habe das Beispiel umgesetzt. Aber leider sehe ich im HTML keine META-Zeile mit Content-Type.

    Kann es eigentlich sein, dass das nur so funktioniert, wie du im Buch geschrieben hast?

  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 rainman1983 Beitrag anzeigen
    Ich habe das Beispiel umgesetzt. Aber leider sehe ich im HTML keine META-Zeile mit Content-Type.
    „Content-Type-Header“ != „HTML-Meta-Element“

    Wenn du das Meta-Element einfügen möchtest, warum ergänzt du nicht dieses per entsprechendem „View“-Helfer? Könnte man vor dem Rendern des Layouts erfolgen.

    (Warum auch immer der Zeichensatz geändert werden soll?!)
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  7. #7
    Erfahrener Benutzer
    Registriert seit
    05.09.2008
    Beiträge
    321
    Thanks
    0
    Thanked 3 Times in 1 Post

    Standard

    Ich probiere gerade das ZF2 aus. Deswegen mache ich vielleicht auch manchmal unnütze Sachen.

Ähnliche Themen

  1. Download Header Chrome mit HTML Endung?
    Von SRIT im Forum PHP X-Talk
    Antworten: 10
    Letzter Beitrag: 19.06.2010, 12:37
  2. HTML Tidy & ZF - sauberer HTML Code
    Von DennisBecker im Forum Links
    Antworten: 5
    Letzter Beitrag: 03.02.2010, 15:57
  3. Falsche Sommerzeit-Anpassung bei Initialisierung mit Array
    Von UxPx im Forum Lokalisierung & Internationalisierung
    Antworten: 4
    Letzter Beitrag: 12.12.2008, 17:20
  4. Antworten: 0
    Letzter Beitrag: 05.01.2007, 20:29

Lesezeichen

Berechtigungen

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