【问题标题】:Syntax error, unexpected ':', expecting '(' in Laravel语法错误,意外的 ':',在 Laravel 中期待 '('
【发布时间】:2017-03-11 15:04:12
【问题描述】:

我已经对这个错误进行了一些谷歌搜索,我发现刀片模板中似乎有一个错误,但我看不出我所做的与我的其他有效模板不同。这是错误信息

FatalErrorException in 66e07bb82defb1810fc6e13b82dc623493bf38fa.php line 11:
syntax error, unexpected ':', expecting '('

这是文件中我没有触及的代码行,在我的 IDE 中显示为错误

<?php if: ?> 

最后,这是我在提交表单时触发错误消息的视图。

    @extends('templates.default')

@section('content')
<div class="col-md-6 col-md-offset-3">
            <h3>Your Account</h3>
            <form action="{{ route('profile.avatar') }}" method="post" enctype="multipart/form-data">
                <div class="form-group">
                    <label for="image">Image (only .jpg)</label>
                    <input type="file" name="image" class="form-control" id="image">
                </div>
                <button type="submit" class="btn btn-primary">Save Account</button>
                <input type="hidden" value="{{ Session::token() }}" name="_token">
            </form>
</div>
@stop

templates.default

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
    </head>
    <body>
        @include('templates.partials.navigation')
        <div class="container">
            @include('templates.partials.alerts')
            @yield('content')
        </div>
    </body>
</html>

【问题讨论】:

  • if 什么?我认为刀片模板稍后会期待@if(condition)@endif
  • @acm 嗯,谢谢,这是有道理的,我还没有走那么远,只是想检查上传是否有效。我现在尝试添加条件
  • 您的摘录中未显示触发此错误的代码...我认为它位于 templates.default 中
  • @shock_gone_wild 只是更新问题并添加默认模板文件内容。当我在其他视图中包含 templates.default 时,它工作正常
  • 你可以删除 @include('templates.partials.navigation') 并尝试吗?告诉我问题是否仍然存在(尝试另一个 2)

标签: laravel laravel-5.2 laravel-blade


【解决方案1】:

忘记输入 laravel 刀片模板控制结构的指令所期望的完整语法可能会导致这种情况。例如,以下将产生与 OP 遇到的相同的错误:

@if (count($data) == 0)
    //do something
@elseif
    //do something else
@endif

而下面的代码没有:

@if (count($data) == 0)
    //do something
@else
    //do something else
@endif

@elseif 部分需要一个条件来评估,并且在没有发现任何内容时刀片模板解析器会变得疯狂。

【讨论】:

    【解决方案2】:

    你不应该使用像&lt;?php if: ?&gt; 这样的东西。如果您想在 Blade 模板中使用条件,请执行以下操作:

    @if($a == 2)
        A is 2
    @endif
    

    Read here 了解更多信息。

    【讨论】:

    • 我没有使用这些条件我目前没有条件,但 在位于 storage\framework\views\66e07bb82defb1810fc6e13b82dc623493bf38fa.php 行的 Laravel 生成文件中11
    • 运行php artisan view:clear 清除所有视图缓存。
    【解决方案3】:

    被调用的函数将我重定向到另一个我没有检查过的视图,当我意识到它在提交表单时重定向了我然后我检查了视图并且它有一个杂散的@if,这导致了错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-02
      • 2017-09-12
      • 1970-01-01
      • 2019-12-06
      • 2013-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多