【问题标题】:Laravel : Parse error: syntax error, unexpected 'if' (T_IF) on viewLaravel:解析错误:语法错误,视图中出现意外的“if”(T_IF)
【发布时间】:2018-07-13 10:09:50
【问题描述】:

我有一个 laravel 程序代码,它将执行 2 个数据。如果查询的数据上有一个“banjar”,它将显示从banjar中心点到目的地点的距离。否则它将显示从其他中心点到目标点的距离。

但是当我执行此代码时出现错误“解析错误:语法错误,意外 'if' (T_IF)”。

代码在视图中

<tbody>
                        @php
                            //TASIK
                            $latitude1 = -7.325374900000001;
                            $longitude1 = 108.2251681;

                            //BANJAR
                            $latitude2 = -7.3708991;
                            $longitude2 = 108.5418788;

                            $latitudersk = $data->latitude;
                            $longitudersk = $data->longitude;

                            @if( {{ $rsk_tasik }} )
                                $dataJson = file_get_contents("https://maps.googleapis.com/maps/api/distancematrix/json?units=metric&origins=".$latitude1.",".$longitude1."&destinations=".$latitudersk.",".$longitudersk."&key=AIzaSyCyUBu8OPh0adMWbL9McFMMDqJA9UB7jes");
                            @elseif( {{ $rsk_banjar }} )
                                $dataJson = file_get_contents("https://maps.googleapis.com/maps/api/distancematrix/json?units=metric&origins=".$latitude2.",".$longitude2."&destinations=".$latitudersk.",".$longitudersk."&key=AIzaSyCyUBu8OPh0adMWbL9McFMMDqJA9UB7jes");
                            @endif

                            $json = json_decode($dataJson);
                            $distance = $json->rows[0]->elements[0]->distance->text;
                        @endphp
                    @foreach($rsk as $no => $data)
                    <tr>

                        <td>{{ $no +1 }}</td>
                        <td>{{ $data->address }}</td>
                        <td>{{ $data->latitude }}</td>
                        <td>{{ $data->longitude }}</td>
                        <td>{{ $distance }}</td>
                    </tr>
                    @endforeach
                    </tbody>

在控制器中我使用这样的查询

$rsk = DB::select("SELECT * FROM gmaps_geocache WHERE address LIKE '%RSK%'");
        $rsk_tasik = DB::select("SELECT * FROM gmaps_geocache WHERE address LIKE '%RSK%' AND address NOT LIKE '%banjar%'");
        $rsk_banjar = DB::select("SELECT * FROM gmaps_geocache WHERE address LIKE '%RSK%' AND address LIKE '%banjar%'");

如何解决,视图是这样的

【问题讨论】:

  • 你混合了@php,它需要纯 PHP 代码和刀片指令。从@php 指令中提取其余刀片指令或使用普通变量。
  • 你是什么意思?
  • @if 是刀片指令。如果你把它放在@php 块中,它的含义与你想象的不同

标签: php mysql laravel google-maps


【解决方案1】:

不要在@php 和@if 中使用{{ }}

<tbody>
                    @php
                        //TASIK
                        $latitude1 = -7.325374900000001;
                        $longitude1 = 108.2251681;

                        //BANJAR
                        $latitude2 = -7.3708991;
                        $longitude2 = 108.5418788;

                        $latitudersk = $data->latitude;
                        $longitudersk = $data->longitude;

                        if($rsk_tasik) {
                               $dataJson = file_get_contents("https://maps.googleapis.com/maps/api/distancematrix/json?units=metric&origins=".$latitude1.",".$longitude1."&destinations=".$latitudersk.",".$longitudersk."&key=AIzaSyCyUBu8OPh0adMWbL9McFMMDqJA9UB7jes");

                        } elseif($rsk_banjar) {
                               $dataJson = file_get_contents("https://maps.googleapis.com/maps/api/distancematrix/json?units=metric&origins=".$latitude2.",".$longitude2."&destinations=".$latitudersk.",".$longitudersk."&key=AIzaSyCyUBu8OPh0adMWbL9McFMMDqJA9UB7jes");
                        }

                           $json = json_decode($dataJson);
                           $distance = $json->rows[0]->elements[0]->distance->text;
                        @endphp
                @foreach($rsk as $no => $data)
                <tr>

                    <td>{{ $no +1 }}</td>
                    <td>{{ $data->address }}</td>
                    <td>{{ $data->latitude }}</td>
                    <td>{{ $data->longitude }}</td>
                    <td>{{ $distance }}</td>
                </tr>
                @endforeach
                </tbody>

【讨论】:

  • 我仍然收到错误“解析错误:语法错误,意外'if'(T_IF)”
  • "ErrorException (E_ERROR) 解析错误:语法错误,意外的 'endif' (T_ENDIF),预期文件结束"
  • @MuhammadAnwari 我测试了,很奇怪,更新答案
【解决方案2】:

你可以试试这个:

@php
//TASIK
$latitude1 = -7.325374900000001;
$longitude1 = 108.2251681;

//BANJAR
$latitude2 = -7.3708991;
$longitude2 = 108.5418788;

$latitudersk = $data->latitude;
$longitudersk = $data->longitude;

if($rsk_tasik)
{
    $dataJson = file_get_contents("https://maps.googleapis.com/maps/api/distancematrix/json?units=metric&origins=".$latitude1.",".$longitude1."&destinations=".$latitudersk.",".$longitudersk."&key=AIzaSyCyUBu8OPh0adMWbL9McFMMDqJA9UB7jes");
}
else 
{
    $dataJson = file_get_contents("https://maps.googleapis.com/maps/api/distancematrix/json?units=metric&origins=".$latitude2.",".$longitude2."&destinations=".$latitudersk.",".$longitudersk."&key=AIzaSyCyUBu8OPh0adMWbL9McFMMDqJA9UB7jes");
}
$json = json_decode($dataJson);
$distance = $json->rows[0]->elements[0]->distance->text;
@endphp

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-09
    • 2011-07-23
    • 1970-01-01
    • 2019-01-16
    相关资源
    最近更新 更多