#php #dependency-injection #phalcon #swiftmailer
#php #внедрение зависимости #phalcon #swiftmailer
Вопрос:
Я пытаюсь загрузить SwiftMailer на Phalcon 3 с помощью инжектора зависимостей и получаю сообщение об ошибке службы Swift_transporter.
Исключение Phalcon Di : Служба ‘Swift_SmtpTransport’ не была найдена в контейнере для внедрения зависимостей
Я хотел бы знать, как я могу загрузить службу Swift_SmtpTransport в инжектор зависимостей, без composer. Я знаю, что composer может легко решить эту проблему, но мне интересно, есть ли другие варианты.
В моем service.php в файл я добавил следующие строки:
$di->set('mailer', function(){
$mailer = new Manager([
'driver' => 'sendmail',
'sendmail' => '/usr/sbin/sendmail -bs',
'viewsDir' => $this->config->application->viewsDir . 'emails/',
'from' => [
'email' => 'notify@website.com',
'name' => 'Company Team'
]
]);
return $mailer;
});
Затем я вызываю службу со следующими строками:
$this->mailer([
'to' => 'email@test.com',
'name' => 'First and Last Name',
'subject' => _('Welcome to my website'),
'body' => [
'view' => 'welcome',
'params' => [
'name' => 'First Name',
'link' => $this->url->get('users/activate/?email=email@test.comamp;activation_key=******')
]
]
]);
Ответ №1:
В phalcon 3.0 был добавлен новый метод, вызывающий загрузчик phalcon loadFile
. Просто используйте его с swift_required.php
путем
Комментарии:
1. Привет, Юрий! Спасибо за ваш ответ
Ответ №2:
Теперь я понимаю, как работает инкубатор Phalcon. Если кто-то устанавливает инкубатор без composer, должен учитывать, что некоторым библиотекам в инкубаторе нужны внешние библиотеки. По этой причине, если вы устанавливаете Incubator путем клонирования репозитория Github и не запускаете composer update, вам придется загружать все зависимости внешней библиотеки одну за другой.
Комментарии:
1. Или просто зарегистрируйте весь каталог или пространство имен с помощью phalcon loader 🙂
2. в моей структуре нет папки поставщика, как мне решить ту же проблему