Laravel5-サーバーでBladeAPIを使用して文字列をコンパイルおよび補間する

mtpultz

ブレードサービスコンテナを使用して、マーカーが含まれている文字列を取得してコンパイルし、ブレードテンプレートに追加して、さらに補間できるようにします。

したがって、次のデータベースから取得したサーバーに電子メール文字列(簡潔にするために省略)があります。

<p>Welcome {{ $first_name }},</p>

そして、私はそれをに補間したい

<p>Welcome Joe,</p> 

したがって、Bladeテンプレートに$ contentとして送信し、Bladeが2回補間しないため、すべてのコンテンツとマークアップをレンダリングすることができます。現在、テンプレートはクライアントで作成され、データベースに保存されています。

Blade::compileString(value)を生成しますが<p>Welcome <?php echo e($first_name); ?>,</p>、BladeAPIをJoe使用して文字列で$ first_nameを解決する方法を理解できず、後でBladeテンプレート内でそれを実行しません。次のようなPHP区切り文字を含む文字列として電子メールに表示するだけです。

<p>Welcome <?php echo e($first_name); ?>,</p>

助言がありますか?

tptcat

これはそれを行う必要があります:

// CustomBladeCompiler.php

use Symfony\Component\Debug\Exception\FatalThrowableError;

class CustomBladeCompiler
{   
    public static function render($string, $data)
    {
        $php = Blade::compileString($string);

        $obLevel = ob_get_level();
        ob_start();
        extract($data, EXTR_SKIP);

        try {
            eval('?' . '>' . $php);
        } catch (Exception $e) {
            while (ob_get_level() > $obLevel) ob_end_clean();
            throw $e;
        } catch (Throwable $e) {
            while (ob_get_level() > $obLevel) ob_end_clean();
            throw new FatalThrowableError($e);
        }

        return ob_get_clean();
    }
}

使用法:

$first_name = 'Joe';
$dbString = '<p>Welcome {{ $first_name }},</p>';

return CustomBladeCompiler::render($dbString, ['first_name' => $first_name]);

Laracastsフォーラムの@tobia感謝します

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Laravel5シード

分類Dev

Laravel5シード

分類Dev

Laravel5名前空間

分類Dev

Laravel5の動的パス

分類Dev

Laravel5でクエリ

分類Dev

Laravel5でckeditorを使用する方法

分類Dev

Laravel5でTermExtractorを使用する

分類Dev

laravel5でmemcachedを使用する

分類Dev

ForeachインサートLaravel5 Eloquent

分類Dev

Laravel5のインストール

分類Dev

Laravel5カーボンと時間

分類Dev

Laravel5でDBを接続する

分類Dev

Webpackエラー 'エラー:ReactJS.NETおよびMVC 5を使用してReactサーバー側コンポーネントをコンパイルしようとすると、ファイナルローダーがバッファーまたは文字列を返しませんでした'

分類Dev

PostgresSQLを使用したLaravel5

分類Dev

Dingoを使用したLaravel5 API

分類Dev

AJAXを使用したLaravel5 jQuery

分類Dev

phpseclibをLaravel5に統合する

分類Dev

認証laravel5を作成する

分類Dev

応答データをバインドしてlaravel5で表示する方法

分類Dev

Laravel5。デバッグモード

分類Dev

Laravel5のヘルパーをPHPUnitでオーバーライドする

分類Dev

Laravel5のヘルパーをPHPUnitでオーバーライドする

分類Dev

Laravel5時々検証ルール

分類Dev

Laravel5のフィルター

分類Dev

Laravel5ルートとmod_rewrite

分類Dev

Laravel5管理パネル認証

分類Dev

列タイプの変更Laravel5

分類Dev

ログイン時のLaravel5 TokenMismatchException

分類Dev

Laravel5エラー報告の抑制