虽然可以创建环境变量SENDER_ADDRESS
并在控制器中访问它,但该地址在功能测试中不可用。这是由于\tests
目录与\src
处于同一级别。在环境服务EnvService
中:
use Symfony\Component\Dotenv\Dotenv;
class EnvService
{
public function mailSender() {
$dotenv = new Dotenv();
$dotenv->load('../.env');
$sender = getenv('SENDER_ADDRESS');
return $sender;
}
}
然后在控制器中
public function invite(Request $request, \Swift_Mailer $mailer, EnvService $env)
{
$invite = new Invitation();
$form = $this->createForm(InvitationType::class, $invite);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$invitation = $request->request->get('invitation');
// $sender = $this->get('mailer.sender_address');
$sender = $env->mailSender();
...
将发送电子邮件。
但是在功能测试中会发生此错误:
无法读取“ ../.env”环境文件
如果相反,将swiftmailer.yaml
修改为包含sender_address: 'admin@bogus.info'
错误
找不到服务“ swiftmailer.sender_address”:其中的容器 “ App \ Controller \ RegistrationController”是一个较小的服务定位器
我曾尝试过在services.yaml
中添加SwiftMailer服务这一主题,但没有成功。最新的迭代是:
swiftmailer:
class: 'Swift_Mailer\Swift\Mailer'
sender_address: 'admin@bogus.info'
public: true