首页 文章

如何在Laravel中调试“解析错误:语法错误,意外'<',期待']'”?

提问于
浏览
0

我正在尝试创建一个列出汽车表中汽车的表单,如果单击,则发送到另一个基于DB查询的表单,该查询返回所选汽车的数据(由 $modelesc 标识) . 此表单将数据发送到"orders"表 .

我现在在orders.blade.php中收到以下错误:

解析错误:语法错误,意外''',期待']'

我不明白为什么我得到'<';我在代码中没有看到这个!

到目前为止这是我的代码:

CarController

function catalog() {
    $cars = DB::table('cars')->get();
    return view('catalog', compact('cars'));
}

function orders($modelesc=null) {
    $cars = DB::table('cars')->where('Model', '=', '$modelesc');
    return view('orders', compact('cars'));
}

Catalog.blade.php

@foreach($cars as $car)
    {!! Form::open(array('action' => 'CarController@orders', 'method' => 'GET')) !!}
    {!! Form::hidden('$modelesc', $car->Model) !!}
    {!! Form::submit($car->Model) !!}
    {!! Form::close() !!}                                       
@endforeach

Orders.blade.php

{!! Form::open(array('action' => 'index', 'method' => 'POST')) !!}
    {!! Form::text('Model', $car->Model) !!}
    {!! Form::hidden(users_id, Auth::user()->id) !!}
    {!! Form::hidden(Fabrication_date, date(Y-m-d)) !!}
    {!! Form::select('Colour', [
        @foreach($colours as $colour)
            '$colour->Colour' => '$colour->Colour'
        @endforeach
    ]) !!}
    {!! Form::hidden(Order_status_id, '1' !!}
{!! Form::close() !!}

这是订单表的结构 . * _id字段来自其他表,我想用相关条目填充表单的一些值(id,users_id,Model,Fabrication_date,Colour_id,Order_status_id) .

3 回答

  • 0

    首先,您需要将表单名称包装在引号内,订单状态ID也缺少结束括号:

    {!! Form::hidden('users_id', Auth::user()->id) !!}
    
    {!! Form::hidden('Fabrication_date', date('Y-m-d')) !!}
    
    {!! Form::hidden('Order_status_id', '1') !!}
    

    接下来,如果$ colors是一个集合,您可以在Laravel 5.4中执行以下操作(我不确定您使用的是哪个版本)

    {!! Form::select('Colour', $colours->pluck('Colour')) !!}
    

    如果您使用的是Laravel 5.1或之前的版本,您将执行以下操作:

    {!! Form::select('Colour', $colours->lists('Colour')) !!}
    

    这是因为在5.2中删除了 lists 方法 .

    @pseudoanime的答案也是正确的,数据库调用需要添加 get 方法

  • 2

    尝试更改$ cars = DB :: table('cars') - > where('Model','=','$ modelesc');

    $cars = DB::table('cars')->where('Model', '=', $modelesc)->get();
    
  • 0

    您的CarController中的订单方法没有将 $cars 设置为您的想法;如果没有调用 get() ,它只会获取模型等于字符串"$modelesc"而不是 $modelesc 的汽车 .

    此外,在您的 orders.blade.php 文件中,您似乎引用了一个 $colours 变量,但这不会在CarController中传递 .

    将您的 orders 方法更改为以下方法:

    public function orders($modelesc = null)
    {
        $cars = DB::table('cars')
            ->where('Model', $modelesc)
            ->get();
    
        $colours = DB::table('colours')->get()->pluck('Colour');
    
        return view('orders', compact('cars', 'colours'));
    }
    

    您的 orders.blade.php 文件中的 Form::select 调用也存在问题; Blade模板指令( @foreach@endforeach )仅适用于Blade文件的"HTML"部分 . 因为我们在CarController中的颜色集合上调用了 pluck() ,所以我们可以简单地为该方法传入 $colours .

    {{-- Incorrect --}}
    {!! Form::select('Colour', [
        @foreach($colours as $colour)
            '$colour->Colour' => '$colour->Colour'
        @endforeach
    ]) !!}
    
    {{-- Correct --}}
    {!! Form::select('Colour', $colours) !!}
    

    您似乎也在表单构建器中使用常量(而不是带引号的字符串);这些应该只是字符串 .

    {!! Form::open(['action' => 'index', 'method' => 'POST']) !!}
        {!! Form::text('Model', $car->Model) !!}
        {!! Form::hidden('users_id', Auth::user()->id) !!}
        {!! Form::hidden('Fabrication_date', date('Y-m-d')) !!}
        {!! Form::select('Colour', $colours) !!}
        {!! Form::hidden('Order_status_id', '1') !!}
    {!! Form::close() !!}
    

相关问题