2017-08-15 52 views
1

我想在我的服务类mailer 使用参数parameters.yml但我得到这个错误,而实例化的邮件类:Symfony:如何在服务类中使用配置参数?

$mailer = new Mailer(); 

知道该参数在parameters.yml定义:

警告:缺少AppBundle \ Service \ Mailer :: __构造()的参数1,在

中调用
namespace AppBundle\Service 


class Mailer 
{ 
private $mailer_user; 
private $mailer_password; 
private $mailer_name; 
private $mailer_host; 
public function __construct($mailer_user, $mailer_password ,$mailer_name ,$mailer_host) 
{ 
    $this->mailer_name = $mailer_user; 
    $this->mailer_password = $mailer_password; 
    $this->mailer_user = $mailer_name; 
    $this->mailer_host = $mailer_host; 
} 
//..... 
} 

services.yml:

mailer: 
    class: 'AppBundle\Service\Mailer' 
    arguments: [%mailer_user%, %mailer_password% ,%mailer_name% ,%mailer_host%] 
+1

您应指定你得到了什么错误(一些异常或什么),因为“_doesnt WORK_”是不是足够多? 。 PS:你应该从参数值和服务参数'%$ mailer_host%'中删除美元符号(这是一个错字?)。 –

+0

@gp_sflover是否是正确的做法?错误=>哎呀,看起来像是出了问题。 – Achraf

+1

你为什么要重复services.yml中的邮件参数?或者,这只是一种复制/粘贴的东西? – Cerad

回答

1

要了解“我怎么可以使用parameters.yml的参数在我的服务类”(,看看如何服务可以在Symfony的应用使用)刚看完的Symfony文档关注文档的版本的Symfony你正在阅读

BTW你不应该实例化直接像你这样一个服务类:

$mailer = new Mailer(); 

但检索服务Container服务实例(的Symfony会照顾自动注入所有配置的依赖关系),就像我们通常在Controller中执行的那样(下面的示例访问Ser使用提供延长由FrameworkBundle提供的基本控制器短码副列入的Symfony的标准版本):

$mailer = $this->container->get('mailer'); 
相关问题