Laravel / Blade,内容中的模板内容

时间:2016-09-18 11:55:20

标签: php laravel templates laravel-5.2 blade

我有一个数组,我存储"通知"的定义。其中两个都有我想要模板化的动态变量,但内容本身也是一个模板。

'start_process_import' => array(
    "content" => "Started processing: {{$name}}",
    "view" => '/ajax_templates/notifications/notification',
    'icon' => 'fa-plus',
    'labelStyle' => 'label-success',
    'href' => '/user/view/{{$id}}'
)

正如您所看到的,"内容"和" href" index都有Blade模板内容。

然后我将这些数据以及其他数据传递给渲染视图,如下所示:

$response['content'] = view($configView['view'], $data)->render());

这是视图模板文件,它可以正确地获得刀片模板。

       <li>
<a href="{{ $href }}">
    <span class="time">{{ $date }}</span>
    <span class="details">                                                       
        <span class="label label-sm label-icon {{ $labelStyle }}">
            <i class="fa {{$icon}}"></i>
        </span>
        {{$content}} 
    </span>
</a>

这是输出:

       <li>
<a href="/user/view/{{$id}}">
    <span class="time">2016-09-18 11:37:37</span>
    <span class="details">                                                       
        <span class="label label-sm label-icon label-success">
            <i class="fa fa-plus"></i>
        </span>
        Started processing: {{$name}} 
    </span>
</a>

$ id和$ name变量仍然存在,并且不是Blade模板格式。

有没有办法去&#34;加倍&#34;刀片模板视图?

2 个答案:

答案 0 :(得分:0)

您可以访问模板中的变量:$name$id,对吧?建议将在下面提供,这可能是有用的。但是,没有办法知道它是否有效。这是建议:

<?php

    'start_process_import' => array(
        "content" => "Started processing: ",     //<== REMOVED DYNAMIC VARIABLE: $name
        "view" => '/ajax_templates/notifications/notification',
        'icon' => 'fa-plus',
        'labelStyle' => 'label-success',
        'href' => '/user/view/'                 //<==  REMOVED DYNAMIC VARIABLE: $id
    );

BLADE TEMPLATE

   <li>
       <!-- SINCE BOTH $id & $name ARE AVAILABLE TO YOU IN THE CURRENT TEMPLATE -->
       <!-- YOU COULD STRIP THE DYNAMIC VARIABLES($name & $id) FROM THE content & href KEYS -->
       <!-- AND PERHAPS ADD THEM DIRECTLY HERE WITHIN THE TEMPLATE -->
        <a href="{{ $href }}{{ $id }}">
            <span class="time">{{ $date }}</span>
            <span class="details">                                                       
                <span class="label label-sm label-icon {{ $labelStyle }}">
                    <i class="fa {{$icon}}"></i>
                </span>
                {{ $content }}{{ $name }}
            </span>
        </a>
   </li>

答案 1 :(得分:0)

如果您确实需要重新渲染模板两次,则需要使用String Blade Compiler包或类似的包。