Swift_SmtpTransport phalcon

#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. в моей структуре нет папки поставщика, как мне решить ту же проблему