2015-12-27 240 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