我正在尝试创建一个列出汽车表中汽车的表单,如果点击,则发送到另一个表单,该表单基于数据库查询返回所选汽车的数据(由$modelesc
标识)。此表单将数据发送到“订单”表。
我现在在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)。
答案 0 :(得分:2)
首先,您需要将表单名称包含在引号内,订单状态ID也缺少结束括号:
[ { label: "SeedSchool", value: 1 }
接下来,如果$ colors是一个集合,您可以在Laravel 5.4中执行以下操作(我不确定您使用的是哪个版本)
{!! Form::hidden('users_id', Auth::user()->id) !!}
{!! Form::hidden('Fabrication_date', date('Y-m-d')) !!}
{!! Form::hidden('Order_status_id', '1') !!}
如果您使用的是Laravel 5.1或之前的版本,您将执行以下操作:
{!! Form::select('Colour', $colours->pluck('Colour')) !!}
这是因为在5.2中删除了{!! Form::select('Colour', $colours->lists('Colour')) !!}
方法。
@pseudoanime对他的回答也是正确的,数据库调用需要lists
方法添加
答案 1 :(得分:0)
尝试更改$ cars = DB :: table(' cars') - > where(' Model',' =',' $ modelesc');
$cars = DB::table('cars')->where('Model', '=', $modelesc)->get();
答案 2 :(得分:0)
CarController中的订单方法并未将$cars
设置为您的想法;不调用get()
,它将是Builder的实例而不是数组!此外,您只能获取模型等于字符串" $ 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'));
}
您的Form::select
文件中的orders.blade.php
电话也存在问题; Blade模板指令(@foreach
,@endforeach
)仅适用于" HTML" Blade文件的一部分。由于我们在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() !!}