vysokeškoly / to-inline-style-email-bundle
A Symfony bundle 用于使用 tijsverkoyen 的 CssToInlineStyles 翻译器
Requires
- php: ^8.1
- symfony/config: ^5.0 || ^6.0
- symfony/dependency-injection: ^5.0 || ^6.0
- symfony/http-kernel: ^5.0 || ^6.0
- symfony/routing: ^5.0 || ^6.0
- tijsverkoyen/css-to-inline-styles: ^2.2.1
- twig/twig: ^3.0
Requires (Dev)
- ergebnis/composer-normalize: ^2.28
- php-parallel-lint/php-parallel-lint: ^1.3
- phpstan/extension-installer: ^1.1
- phpstan/phpstan: ^1.8
- phpstan/phpstan-phpunit: ^1.1
- phpunit/phpunit: ^9.5.20
Conflicts
README
ToInlineStyleEmailBundle 是一个用于 Symfony2 的 bundle,用于使用 CssToInlineStyles 翻译器,由 Tijs Verkoyen 开发(有关存储库,请参阅 https://github.com/tijsverkoyen/CssToInlineStyles)
需求
ToInlineStyleEmailBundle 仅支持 PHP 8.1 及以上版本。
安装
请使用 Composer 在您的 Symfony2 应用程序中安装此 bundle。
以下行应添加到您的 composer.json
"require": { "vysokeskoly/to-inline-style-email-bundle": "^3.0" },
然后,通过添加以下行在您的 AppKernel 中注册该 bundle
VysokeSkoly\ToInlineStyleEmailBundle\ToInlineStyleEmailBundle::class => ['all' => true],
文档和示例
该 bundle 提供了一个名为 css_to_inline_email_converter 的服务。在控制器中使用它,可以获得 Tijs Verkoyen 开发的转换器的快捷方式。例如。
public function indexAction() { $converter = $this->get('css_to_inline_email_converter'); ... }
获取 HTML 和 CSS 作为字符串,并将这些必要值设置为转换器对象,例如。
$converter = $this->get('css_to_inline_email_converter'); $html = ...; // get the HTML here $css = ....; // get the CSS here return $converter->inlineCSS($html, $css);
从其文件夹中检索 HTML 和 CSS 文件仅取决于您。例如,在控制器中检索 CSS 的内容
file_get_contents($this->container->getParameter('kernel.root_dir').'/../src/Acme/TestBundle/Resources/css/mystyle.css');
当然,假设一个 Symfony 用户会使用模板而不是静态 HTML 页面。因此,为了方便,该服务提供了一个可以渲染模板的函数。例如。
$converter->setHTMLByView( 'AcmeTestBundle:MyController:my_template.html.twig', [ 'param_1' => $val_of_param_1, // ..., 'param_n' => $val_of_param_n ] );
必须使用前面的函数而不是 setHTML()
函数。
要使用 generateStyledHTML
方法,只需像这样使用它
$converter->setHtml($html); $converter->setCss($css); return $converter->generateStyledHTML();
您可以直接在 Twig 模板中使用内联 CSS
{% inlinecss '/css/email.css' %} <div class="foo"> ... </div> {% endinlinecss %}
支持相对于 bundle 的路径
{% inlinecss '@AppBundle/Resources/css/email.css' %} <div class="foo"> ... </div> {% endinlinecss %}
支持动态变量(使用带有资产的绝对路径的变量或直接使用文件的完整路径)
{% set path = asset('css/email.css', null, true) %} {% inlinecss path %} <div class="foo"> ... </div> {% endinlinecss %}
支持动态变量(使用带有资产的绝对路径的变量或直接使用文件的完整路径)
{% set path = asset('css/email.css', null, true) %} {% inlinecss path %} <div class="foo"> ... </div> {% endinlinecss %}
有关服务的使用方法,请参阅文件中的文档。
贡献
ToInlineStyleEmailBundle 是一个开源项目,采用 MIT 许可证。鼓励贡献。请随时为此 bundle 做出贡献。
关于 bundle 的作者
ToInlineStyleEmailBundle 最初由 Roberto Trunfio 开发。目前,该 bundle 由 gushphp 组织通过 Luis Cordova 维护。
最初在 Packagist 上的 robertotru 包已移至此处,并由作者同意进行维护。