Php 在symfony 2中创建邮件服务
我是Symfony的新手,现在我有一个关于配置和发送邮件的问题。 实际上,我正在控制器中配置和发送邮件,但对我来说,最好不要在控制器中配置邮件,而是在.ini文件或其他文件中配置邮件。因此,我认为正确的方法是将其配置为服务,因为这样我可以在类中而不是在代码中配置邮件本身 我创建了一个类,看起来是这样的:Php 在symfony 2中创建邮件服务,php,email,symfony,ini,Php,Email,Symfony,Ini,我是Symfony的新手,现在我有一个关于配置和发送邮件的问题。 实际上,我正在控制器中配置和发送邮件,但对我来说,最好不要在控制器中配置邮件,而是在.ini文件或其他文件中配置邮件。因此,我认为正确的方法是将其配置为服务,因为这样我可以在类中而不是在代码中配置邮件本身 我创建了一个类,看起来是这样的: class PwMailer{ protected $mailer; public function setMailer($mailer) { $this->mailer = $
class PwMailer{
protected $mailer;
public function setMailer($mailer)
{
$this->mailer = $mailer;
}
public function sendEmail($email, $password)
{
$message = \Swift_Message::newInstance()
->setSubject('New Password')
->setFrom('xxx@nobody.com')
->setTo($email)
->setBody('Your new Password is '.$password)
;
$this->mailer->send($message);
}
}
值$email和$password应该来自控制器。在我的配置文件app\config\config.yml中,我配置了它:
services:
pw_mailer:
class: Pso\LogBundle\PwMailer
arguments: [sendmail]
我从控制器调用服务
$mailer = new Mailer('pw_mailer');
$mailer->send();
现在我得到了错误FatalErrorException:错误:在“…controller”中找不到类“…Mailer”
我的代码是和的混合
如果在类中而不是在控制器中配置邮件的服务容器是正确的方法,并且我的想法是错误的,那么我很高兴得到一个提示。直到现在,我才明白服务容器的配置到底是如何工作的
问候语您的服务具有外部依赖性,尤其是邮件服务。您可以注入服务容器本身,也可以注入mailer服务。如果您的服务只需要mailer服务而不需要其他服务,我建议只使用mailer服务。以下是如何配置DIC,以使用setter注入邮件服务:
services:
pw_mailer:
class: Pso\LogBundle\PwMailer
arguments: [mailer]
服务:pw_mailer:第二行不应该与第一行对齐。这是一个非常常见的误解。您认为新邮件程序将以某种方式访问容器,但两者完全独立。作为初学者,您需要$mailer=$this->container->get'pw_mailer';我想你也会遇到更多的问题。可能想先在手册中获得示例,然后再进行细化。我尝试从小的方面开始。行$this->mailer->send$message;在类中,实际上会导致错误FatalErrorException:error:对非对象上的成员函数sendmail的调用我是否理解正确,我无法将参数从控制器提供给容器?是否可以在单独的类或ini文件中配置邮件的参数?