2015-12-27 191 views
0

我是ZF2的新手,我不明白ZF2應用程序的配置。zf2模塊/全局配置

例如,翻譯在模塊的配置中進行配置。如果使用不同來源的模塊,這似乎是一個好方法。但是,我必須爲每個模塊翻譯相同的內容 - 這不是一種有效的方法。 郵件運輸也一樣。通常我想以同樣的方式發送我的Web應用程序的所有郵件(Sendmail或Smtp)。

那麼是否有解決方案將此配置從模塊的配置移動到全局配置?特別是對於使用第三方模塊?

問候 Bytecounter

+0

所有CONFIGS在一個自動合併,所以沒有必要從一個配置文件移到配置到另一個。你遇到什麼具體的部分? –

+0

我想將Zend \ Mail \ Transport \ Sendmail設置爲全局默認郵件tranpsorter。但是 - 例如,查看第三方模塊「phly/PhlyContact」 - 它配置了它自己的密鑰'$ config = $ config ['phly_contact'] ['mail_transport'];這是一個好主意,但不適合很多模塊的舒適配置 – bytecounter

回答

1

只是別名服務:

return [ 
    'service_manager' => [ 
     'aliases' => [ 
      'PhlyContactMailTransport' => 'MailTransport', 
     ], 
     'factories' => [ 
      'MailTransport' => function (ServiceManager $serviceManager) { 
       // create your transport 

       return $transport; 
      }, 
     ], 
    ], 
]; 

僅供參考,請參閱

+0

感謝很多!這是我搜索的內容。 – bytecounter

0

我有電子郵件全局設置的文件夾config/autoload/mail.global.php

喜歡這個

return [ 
    'service_manager' => [ 
     'factories' => [ 
      'MailTransport' => function ($sm) { 
       $transport = new \Zend\Mail\Transport\File(); 
       $options = new \Zend\Mail\Transport\FileOptions([ 
        'path' => './data/mail', 
        'callback' => function (\Zend\Mail\Transport\File $transport) { 
         return 'Message_' . date('d_m_Y H_i') . '__' . mt_rand() . '.eml'; 
        }, 
       ]); 
       $transport->setOptions($options); 

       return $transport; 
      } 
     ] 
    ] 
]; 

中並調用它的任何地方$this->getServiceManager()->get('MailTransport');

+0

好的,但這不適用於使用自己的工廠和配置密鑰的第三方模塊,所以我認爲,這些模塊不是100%符合ZF2。 – bytecounter