刀片模板中的意外 endforeach

Posted

技术标签:

【中文标题】刀片模板中的意外 endforeach【英文标题】:unexpected endforeach in blade template 【发布时间】:2014-08-02 19:25:25 【问题描述】:

我在 laravel 的 laravel 中有一个 blade 模板,它显示一个选项卡视图。选项卡是不同的eventtypes 并且在选项卡中是每个类型的events。这种观点直到今天都很好。唯一改变的是我可以软删除events

我得到的错误如下:

syntax error, unexpected 'endforeach' (T_ENDFOREACH) 

这是整个模板的源代码:

@extends('master')

@section('title', '- Kalenderbeheer')

@section('head')
 html::script('Script/lib/dataTables.js'); 
<script>
    $(document).ready(function()
        $("#EventTypeTabs").tab();

        $(".eventtable").dataTable(
            paging: false,
            info: false,
            "aoColumns": [
                null,
                null,
                null,
                 "asSorting": [] 
            ]
        );

        $(".eventtable tr").click(function()
            if ($(this).data("id"))
                location.href = "/kalender/admin/" + $(this).data("id");
        )
    );
</script>
@stop

@section('body')
<div class="row">
    <div class="col-md-6 col-md-offset-1">
        <h1>Kalenderbeheer</h1>
    </div>
    <div class="col-md-4 rtl">
        <a href="/kalender/admin/nieuw">Nieuwe activiteit toevoegen</a>
    </div>
</div>
<div class="row">
    <div class="col-md-10 col-md-offset-1">
        <ul class="nav nav-tabs" style="margin-bottom: 15px;" id="EventTypeTabs">
            @foreach ($eventtypes as $et)
            <li @if($et->id == 1) class="active" @endif>
                <a href="# $et->getFormattedName() "  data-toggle="tab"> $et->name </a>
            </li>
            @endforeach
        </ul>
        <div class="tab-content eventtypetabs">
            @foreach ($eventtypes as $et)
            <div class="tab-pane fade @if ($et->id == 1)active in@endif" id=" $et->getFormattedName() ">
                @if (count($et->events) > 0)
                <table class="table table-striped eventtable">
                    <thead>
                    <tr>
                        <th>#</th>
                        <th>Datum</th>
                        <th>Naam</th>
                        <th></th>
                    </tr>
                    </thead>
                    <tbody>
                    <?php $c = 0; ?>
                    @foreach ($et->events as $event)
                    <tr data-id=" $event->id ">
                        <td> ++$c </td>
                        <td> preg_replace("/\d2:\d2:\d2/", "", $event->start) </td>
                        <td> $event->name </td>
                        <td>X</td>
                    </tr>
                    @endforeach
                    </tbody>
                </table>
                @endif
            </div>
            @endforeach
        </div>
    </div>
</div>
@stop

错误出现在最后一个@endforeach。这是错误的屏幕截图:

【问题讨论】:

你在哪一行得到这个错误?你能发布完整的错误吗? 错误在最后一个@endforeach,我加了截图。 【参考方案1】:

您只需要在@endif 之前添加一个空格(第 48 行)

<div class="tab-pane fade @if ($et->id == 1)active in @endif" id=" $et->getFormattedName() ">

另外,最好使用三元运算符:

class="tab-pane fade  $et->id == 1 ? 'active in' :''"

【讨论】:

谢谢,这确实是错误。我刚刚通过查看编译后的视图发现了自己。 我也遇到了这个问题,这个解决了。这个问题似乎是因为我们升级了 Laravel 4.2;旧代码在 Laravel 4.1 中运行良好。

以上是关于刀片模板中的意外 endforeach的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Laravel5 中的刀片模板传递扩展主模板中的变量?

Laravel Blade 中的三元组

将 Vue 根实例中的 prop 传递到刀片模板文件中的组件中

Laravel 刀片模板中的图像路径问题

laravel 刀片包含错误 - 语法错误,意外

Laravel 刀片模板,URL::to 中的 foreach 变量?