2017-02-15 3 views
4

私はan emogrifierを使用してブレードテンプレートの結果をフォーマットし、電子メールで送信できます。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... 

予想通りこれは動作しますが、きれいなコードとテスト容易性の利益のために、私は、テンプレート自体の中にHTMLをemogrifyために私のブレードのテンプレートを拡張したいと思います。このような何か:

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

...しかし、ブレードディレクティブは、このような開口部/終了タグを許可していないように見えます。これを達成するより良い方法はありますか?ここで

+0

あなたは、私が興味を持って何か面白い解決策を発見した場合。 – AsTeR

+1

@AsTeR私は優雅な解決策を見つけたことはありません。私はちょうどブレードのテンプレートの外にemogrified。 – Divey

+0

私は同じことをやった! – AsTeR

答えて

-1

は(私は一般的にemogrifierを使用しますが、このことができます願っていません)私はlaravelに私の電子メールブレードを行う方法です。

/通常リソース/ビュー/メールに(ベースの電子メールブレードを作成します。 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

あなた自身の指令を追加するために[Extending A Blade](https://laravel.com/docs/5.4/blade#extending-blade)を見ましたか?エモグリフアを適用した後でも、ブレードのボディをレンダリングしなければならないようです。私は単にあなたに「もっと良い選択肢があれば」と尋ねるだけで代替手段を提供していました。 Emogrifierに頼っているような電子メールの使用に向けたスタイリングを持つ基本的な電子メールブレードを定義する方が一般に簡単です。 –

関連する問題