turk porno porno escort rokettube
Ergebnis 1 bis 8 von 8

Thema: Translator in DI

  1. #1
    Neuer Benutzer
    Registriert seit
    02.01.2012
    Beiträge
    13
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Standard Translator in DI

    Hallo,

    ich habe eine Verständnisfrage zum Thema Di.
    Ich möchte mir anhand eines Documents aus der DB ein Mail-Objekt erzeugen lassen, was ich dann verschicken möchte.
    Dazu habe ich mir eine Factory geschrieben und rufe diese folgendermaßen auf:

    PHP-Code:
    /* @var $mail \MessageCenter\Mail\MailFactory */
    $mail $di->get('MailFactory', array(
       
    'message' => $message
    )); 
    Beim erzeugen benötige ich allerdings auch den Translator für das rendern des Mail-Templates.
    Wie bekomme ich den Translator dort rein?

    Wenn ich einfach eine setTranslator Methode implementiere und diese in der di-Config als required = TRUE setze, injected der mir einen Translator allerdings ohne Konfiguration. Was mache ich falsch oder ist mein Ansatz allgemein doof?

    Danke und viele Grüße

  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 derPetz Beitrag anzeigen
    …oder ist mein Ansatz allgemein doof?
    „Doof“ ist vielleicht die falsche Bezeichnung.

    Zum Erstellen des Mail-Templates würde ich einfach auf „Zend\View“ zurückgreifen, denn dort stehen dir alle View-Helfer zur Verfügung. Damit auch „Zend\I18n\Translator\Translator“.

    Des weiteren wird die Verwendung des „ServiceManagers“ empfohlen und auf „Zend\Di“ ganz zu verzichten.
    Ich verweise dazu mal auf die Mailing-List, denn dort gibt gerade aktuell ein paar Beiträge:
    Zitat Zitat von Matthew Weier O'Phinney
    Now, for the compelling reasons to use SM over DI in ZF2:

    - it's more performant
    - configuration is more straight-forward (you're typically writing
    factories in PHP, rather than creating metadata trees)
    - completely predictable (DI, due to the nature of the lookups, often is not)
    - easy to debug (put breakpoints in your factories, vs debugging framework code)
    - used everywhere (all plugin manager implementations are specific SM instances)
    Zend Framework - DI and Controllers in ZF2
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  3. #3
    Neuer Benutzer
    Registriert seit
    02.01.2012
    Beiträge
    13
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Standard

    Vielen Dank für deine Antwort.

    Dann bau ich das mal auf den ServiceManager um.
    Nur das mit dem View verstehe ich nicht. Ich nutze aktuell schon, wie du geschrieben hast, den "Zend\View" zum rendern der E-Mail Templates.
    Da muss ich doch aber trotzdem meine View Helper vorher hinzufügen bevor ich das Template rendern kann. Oder habe ich da in der Konfiguration komplett was falsch gemacht?

    PHP-Code:
    $translator = new \Zend\I18n\View\Helper\Translate();
    $translator->setTranslator($this->_translator); // $this->translator wird von außen übergeben

    $view = new \Zend\View\Renderer\PhpRenderer();$view->setResolver($resolver);
    $view->getHelperPluginManager()->setService('translate'$translator);

    $viewLayout = new \Zend\View\Model\ViewModel();
    $viewLayout->setTemplate('mailLayout');
    $viewLayout->setVariables(array(
       
    'content' => $content
    )); 

  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 derPetz Beitrag anzeigen
    Nur das mit dem View verstehe ich nicht. Ich nutze aktuell schon, wie du geschrieben hast, den "Zend\View" zum rendern der E-Mail Templates.
    Da muss ich doch aber trotzdem meine View Helper vorher hinzufügen bevor ich das Template rendern kann. Oder habe ich da in der Konfiguration komplett was falsch gemacht?
    Wenn du dich bereits in einer ZF-Anwendung bewegst, dann reicht ein:
    PHP-Code:
    $this->serviceManager->get('ViewRenderer'); 
    (Die entsprechende sollte Klasse sollte natürlich den ServiceManager bereitstellen, z.B. per „ServiceManagerAwareInterface“)
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  5. The Following User Says Thank You to Kaiuwe For This Useful Post:

    derPetz (29.08.2013)

  6. #5
    Neuer Benutzer
    Registriert seit
    02.01.2012
    Beiträge
    13
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Standard

    Vielen Dank!!

    So sieht das gleich viel schicker aus

    Eine Frage habe ich noch, passt aber eventuell nicht in die Kategorie.

    Wenn ich jetzt mehrer Mails mit einmal versenden möchte, durchlaufe ich meine Nachrichten und übergebe diese einzeln dem Transporter zum versenden. Gibt es da noch eine andere Möglichkeit oder geht das nur so?

    PHP-Code:
    $transport = new \Zend\Mail\Transport\Smtp();
    $transport->setOptions(new \Zend\Mail\Transport\SmtpOptions($applicationConfig['notification_center']['email']['smtp_options']));        

    /* @var $message \MessageCenter\Document\Message */            
    foreach ($messages AS $message)
    {
       
    /* @var $mail \Zend\Mail\Message */
       
    $mail $this->getServiceLocator()->get('MessageCenter\Mail\MailFactory')->getMail($message);
       
    $transport->send($mail);

    Geändert von derPetz (29.08.2013 um 13:42 Uhr)

  7. #6
    Neuer Benutzer
    Registriert seit
    02.01.2012
    Beiträge
    13
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Standard

    Achso, jede Nachricht ist Unterschiedlich und geht an verschiedene Empfänger.
    Also CC oder BCC etc. geht da leider nicht.

  8. #7
    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 derPetz Beitrag anzeigen
    Wenn ich jetzt mehrer Mails mit einmal versenden möchte, durchlaufe ich meine Nachrichten und übergebe diese einzeln dem Transporter zum versenden. Gibt es da noch eine andere Möglichkeit oder geht das nur so?
    Die Schleife ist doch praktikabel. Würde man die Transport-Klasse erweitern, dann müsste man wieder viele Möglichkeiten implementieren. (ein Empfänger – mehrere Nachrichten, viele Empfänger –*eine Nachricht, viele Empfänger –*viele Nachrichten, …) Das macht die Klasse komplizierter. (beim Swift Mailer ist es auch nicht anders)

    Deine Entwicklungsumgebung erzählt dir aber auch, per automatischer Codevervollständigung, das nur diese Methode existiert oder du schaust in die API-Doku.
    Zum Zend Framework stehen jedem folgende Quellen zum Nachschlagen zur Verfügung:

  9. #8
    Neuer Benutzer
    Registriert seit
    02.01.2012
    Beiträge
    13
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Standard

    Alles klar, danke!!

Ähnliche Themen

  1. Translator für Select-Box Einträge ausschalten?
    Von claudia.sagner im Forum ZF2 Formulare
    Antworten: 2
    Letzter Beitrag: 28.05.2013, 17:26
  2. Unterschied de_de und de beim Translator
    Von cream im Forum ZF2 Lokalisierung & Internationalisierung
    Antworten: 1
    Letzter Beitrag: 20.05.2013, 00:21
  3. Translator pro Modul
    Von derPetz im Forum ZF2 Lokalisierung & Internationalisierung
    Antworten: 2
    Letzter Beitrag: 05.04.2013, 16:23
  4. Translator: Übersetzungen aus *.mo- UND *.php-Dateien mischen
    Von tector im Forum ZF2 Lokalisierung & Internationalisierung
    Antworten: 3
    Letzter Beitrag: 05.02.2013, 15:15
  5. Message: Could not find a translator
    Von Innocentus im Forum ZF2 Grundlagen
    Antworten: 3
    Letzter Beitrag: 29.03.2012, 16:11

Lesezeichen

Berechtigungen

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