Хотя можно создать переменную среды 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" - это меньший локатор службы
Я пробовал несколько вариантов темы добавлениясервис SwiftMailer в services.yaml
безуспешно.Самая последняя итерация:
swiftmailer:
class: 'Swift_Mailer\Swift\Mailer'
sender_address: 'admin@bogus.info'
public: true