2017-02-15 54 views
4

我使用an emogrifier来格式化刀片模板的结果,以便我可以通过电子邮件发送它。干净地emogrify Laravel刀片模板文件的最佳方法是什么?

$html = View::make('emails.notification', [ 
    'data' => $data 
]); 

$emogrifier = new Emogrifier($html, null); 

$result = $emogrifier->emogrify(); 

// now I can send the result in an email... 

可正常工作,但在干净的代码和可测试性的兴趣,我想延长我的刀模板,模板本身emogrify HTML。事情是这样的:

@emogrify 
    <style> 
    .red-text { 
     color: red; 
    } 
    </style> 
    <p class="red-text">This text is red</p> 
@endemogrify 

...但它看起来像刀片指令不允许打开/关闭标签这样的。有没有更好的方法来完成这一点?

+0

如果你发现任何有趣的解决方案我很感兴趣。 – AsTeR

+1

@AsTeR我从来没有找到一个优雅的解决方案。我只是在刀片模板外面模糊了。 – Divey

+0

我最终也这样做了! – AsTeR

回答

-1

这里是我怎么做我的电子邮件刀片laravel(我一般不使用emogrifier,但希望这有助于):

创建基础电子邮件刀片(通常在资源/视图/电子邮件/ email.blade.php):

<!DOCTYPE html> 
<html lang="en-US"> 
<head> 
    <meta charset="utf-8"> 

    <style> 
     /* Include styles for all emails here */ 
    </style> 

    @section('head') 
    @show 

</head> 

<body> 

<div class="email-body"> 
    @section('body') 
    @show 
</div> 

</body> 
</html> 

然后,当我想创建一个电子邮件,我延长了刀片:

创建NE在资源/视图/电子邮件黑白文件/新用户email.blade.php:

@extends('emails.email') 

@section('head') 
    <style> 

     /* Add additional styling here if you need to! */ 

    </style> 
@stop 

@section('body') 

    <!-- Email body content here! --> 
    <h1>Welcome new user!</h1> 

@stop 
+0

这并不能真正回答我的问题。我特别想知道如何使用修改HTML部分的自定义指令来扩展Blade。或者如果还有其他一些干净的解决方案,我就会全神贯注。 – Divey

+0

你看过[扩展刀片](https://laravel.com/docs/5.4/blade#extending-blade)来添加自己的指令吗?看起来好像你将不得不渲染刀身,然后应用Emogrifier。我只是提供了一个替代方案,就像你问“如果有更好的选择。”我发现定义基于电子邮件使用的样式的基础电子邮件刀片通常更容易依赖于Emogrifier。 –

相关问题