使用数据库中的配置初始化应用程序组件

2024-02-09

我正在构建一个 Yii2 应用程序,通过swiftmailer 扩展 https://github.com/yiisoft/yii2-swiftmailer。我将电子邮件设置(smtp、ssl、用户名等)存储在数据库表中,以便能够使用适当的视图对其进行编辑。 如何使用数据库表中的配置初始化 swiftmailer?

谢谢。


您可以使用以下方式初始化应用程序组件set() http://www.yiiframework.com/doc-2.0/yii-di-servicelocator.html#set%28%29-detail通过应用程序对象可用的方法Yii::$app:

use Yii;

...

// Get config from db here

Yii::$app->set('mailer', [
    'class' => 'yii\swiftmailer\Mailer',
    'transport' => [
        'class' => 'Swift_SmtpTransport',
        // Values from db
        'host' => ... 
        'username' => ...
        'password' => ...
        'port' => ...
        'encryption' => ...
    ],
]);

然后照常使用它:

use Yii;

...

Yii::$app->mailer->...

如果您想对整个应用程序使用数据库中的相同配置,您可以在应用程序引导期间获取并应用此配置。

创建自定义类并将其放置在例如app/components;

namespace app\components;

use yii\base\BootstrapInterface;

class Bootstrap implements BootstrapInterface
{
    public function bootstrap($app)
    {
        // Put the code above here but replace Yii::$app with $app
    }
}

然后在配置中添加:

return [
    [
        'app\components\Bootstrap',
    ],
];

注意:

如果具有相同 ID 的组件定义已经存在,则会 被覆盖。

官方文档:

  • 引导接口 http://www.yiiframework.com/doc-2.0/yii-base-bootstrapinterface.html
  • Mailer http://www.yiiframework.com/doc-2.0/yii-swiftmailer-mailer.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用数据库中的配置初始化应用程序组件 的相关文章

随机推荐

  • 我可以知道 char 指针变量指向的 char-array-size 吗? [复制]

    这个问题在这里已经有答案了 我必须知道 char 指针变量指向的数组大小 但你知道 sizeof 操作不起作用 char a 5 char b a int c sizeof b printf d sizeof b 8 64 bit cpu
  • != 和 !== 之间的区别[重复]

    这个问题在这里已经有答案了 就我而言 我应该使用 如下 还是 更合适 有什么区别 private function authenticateApi ip sentKey mediaServerIp 62 80 198 226 mediaSe
  • 从数组中的 COUNT 中排除空值

    如何从数组的计数中排除空值 因为计数中始终包含空值 count array filter array function x return is null x
  • 在 C# 中模拟可变参数模板

    是否有一种众所周知的方法来模拟 C 中的可变参数模板功能 例如 我想编写一个方法 该方法采用带有任意参数集的 lambda 这是我想要的伪代码 void MyMethod
  • 如何创建自定义 UIButton(带图像)但仍使用 setTitle?

    我尝试使用 UIButtonTypeCustom 创建 UIButton 然后使用以下方法调整它的外观 sendButton setImage UIImage imageNamed sendButtonOff png forState UI
  • 批处理文件最大化当前窗口

    我构建了一个批处理程序 目前正在对其进行调整 以使其更具可读性 用户友好性 我想要我的 bat文件自动设置为最大化 bat文件本身 我读到START MAX在线 但这只是打开命令提示符窗口的一个新实例 我不想有两个 bat文件只是为了最大化
  • Typescript:如何设置方法返回值=>子类

    我有一个带有两个子类的父类 abstract class Point public readonly x number public readonly y number constructor x number y number this
  • 多对多关联的 POST 请求

    我有两个具有多对多关联的实体 class User extends BaseUser and class Calendar var integer ORM Column name id type integer ORM Id ORM Gen
  • 从ggplot2中的误差条中删除端点

    我的目标是在 R 中创建箱线图 不一定要使用 ggplot2 但这就是我现在使用的 其风格与我在某处找到的示例相似 减去文本 这是我到目前为止的代码 dat lt read table file https www dropbox com
  • 如何从 HttpSessionListener 访问 JSF 应用程序范围的托管 bean? [复制]

    这个问题在这里已经有答案了 我正在运行一个JSF应用程序并声明了一些应用程序范围的支持 bean 在common beans xml或使用 ManagedBean and ApplicationScoped注释 我如何从内部访问这些bean
  • 扩展 Selenium:如何调用命令?

    我读到用户扩展 http seleniumhq org docs 02 selenium ide html user extensions and 扩展硒 http release seleniumhq org selenium core
  • 切换到特定片段会产生奇怪的 java.lang.NullPointerException

    这是我目前面临的问题 我最近从带有 ADT 插件的 Eclipse 切换到 Android Studio 并且 Android Studio 出现了一个我在 Eclipse 上从未遇到过的错误 当我切换到名为 LineFragment 的特
  • 从特定目录运行 Cronjob

    我创建了一个用于生成 RSS 提要的 php 脚本 该脚本最终将通过 Cronjob 运行 所有 php 文件和生成的 RSS xml 将位于网站的子文件夹中 如果我在本地开发计算机上的同一目录中使用终端或浏览器 则 php 脚本可以在本地
  • 以编程方式确定图像的人类可读颜色(例如红色、绿色等)

    我正在尝试编写一个脚本 该脚本将以编程方式运行图像并告诉我它的原色 目前该脚本获取每个像素的 RGB 值 将它们与预定义的规则进行比较 并尝试计算每种颜色的像素数 我的问题是剧本有点碰运气 有谁知道更好的方法 也许使用更容易翻译成英语的不同
  • 将 IANA/Olson 时区数据库映射到缩写(如 EST、PST 等)

    我需要将 IANA Olson 时区 ID 映射到缩写 例如 EST PST 等 我知道这不是一对一的映射 例如 对于 EST 有相当多的 IANA 时区 我可以使用某种数据库 映射来实现此目的吗 PS JavaScript 解决方案是更好
  • ExtJs 如何滚动到网格底部?

    我正在使用 extjs 制作一个基于网络的日志查看器 我希望将新的日志行添加到我的 gridview 的底部 因为它不需要排序将其移动到网格的顶部 加上我的同事更喜欢它 从而节省了 cpu 我的问题是 理想情况下 添加新行后网格会滚动到底部
  • React Router (Dom) v4 在输入回车键时重定向到不同的路由

    当用户在输入字段中按 Enter 时 我尝试重定向到新路线 我有一个标题和搜索组件 我想在每个页面上呈现它 我发现了使用重定向组件 withRouter 组件 使用上下文以及可能将历史对象传递到我的搜索组件 输入字段所在的位置 的不同用例
  • 替换字符串中的字符

    我正在尝试创建一个字符串 用 替换所有空格 但我不知道具体该怎么做 有人可以帮忙吗 String phrase new String This is a String test 假设它是Java 你可以使用字符串替换 http downlo
  • 如何禁用 MFC 中的最大化按钮?

    如何禁用 SDI 应用程序中的最大化按钮 功能 为了完整性 int CMainFrame OnCreate LPCREATESTRUCT lpCreateStruct ModifyStyle WS MAXIMIZEBOX 0
  • 使用数据库中的配置初始化应用程序组件

    我正在构建一个 Yii2 应用程序 通过swiftmailer 扩展 https github com yiisoft yii2 swiftmailer 我将电子邮件设置 smtp ssl 用户名等 存储在数据库表中 以便能够使用适当的视图