Переменная Laravel внутри html визуализированного тега - PullRequest
0 голосов
/ 03 марта 2019

Я хочу сделать динамический шаблон электронной почты.Под «динамическим» я подразумеваю, что пользователь может изменять содержимое: как HTML (статический текст), так и тег PHP (имя или адрес).

Это проблема:

  • Я попытался сохранить весь шаблон в виде HTML в моей базе данных и вызвать его с помощью {!! $data->value !!}.
  • Шаблон сработал, и он отображается как тег HTML.
  • Однако тег PHP не отображается.Когда я отправляю электронное письмо, оно остается таким: {{ $demo->demo_one }}.

Кто-нибудь знает, как превратить тег PHP в его значение?Или, может быть, есть другой способ создания динамического шаблона электронной почты?

Любая помощь приветствуется, спасибо.

Ответы [ 2 ]

0 голосов
/ 03 марта 2019

благодаря ответу Ахмеда Нура я могу найти другой способ

что я сделал:

скопировать эту функцию

function render($__php, $__data)
{
    $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();
}

затем вызвать такую ​​функцию

foreach ($data as $key) {
        //first i need to get the template from database
        $template = Blade::compileString($key->value);
        $objDemo->template = $this->render($template, ['receiver' => 'Raven', 'demo_one' => 'Demo One Value', 'demo_two' => 'Demo Two Value', 'sender' => 'SenderUserName']);
    }
0 голосов
/ 03 марта 2019

Кажется, вам нужно перекомпилировать код:

{!! Blade::compileString($demo->demo_one) !!}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...