在这里,我正在尝试预订我的座位,我选择了一个座位,然后尝试在下一页值字段中显示该座位号,但出现此错误。如果我插入默认值,它正在工作。另外,如果将默认值设置为正常,我将无法将这些数据插入数据库。
passenger.blade.php:
@foreach($seat_data as $key => $no)
<div class="col-md-12"> </div>
<div class="rows">
<div class="col-md-3"><strong>Seat No :{{$no['name']}} </strong></div>
<input type="hidden" name="seat[{{$key}}]" class="form-control" id="validationDefault02" placeholder="Seat No" value="{{$no['name']}}">
<div class="col-md-3 mb-3">
{{--<label for="validationDefault01">Name</label>--}}
<input type="text" name="name[{{$key}}]" class="form-control" id="validationDefault01" placeholder="First name">
</div>
PassengersController:
public function collectInformation(Request $request)
{
$buses_id = $request->buses_id;
$schedules_id = $request->schedules_id;
$seat_no = $request->seat_id;
$data = Buses::where('buses_id', $buses_id)->first();
$seat = json_decode($data->seat_layout, true);
$count = count($seat_no);
for ($i = 0; $i < $count; $i++) {
$first = array_shift($seat_no);
$name = empty($seat[$first]['name']) ? $seat[$first]['name'] : $seat_no;
$seat_data[$i] = [
'name' => $name,
'id' => $seat_no,
];
}
我这样更改了我的代码,它可以正常工作。那是对的吗?但问题是我可以再次预订同一座位。问题出在我更改的代码中?
$seat_data[$i] = [
'name' => $seat[$first]['name'],
'id' => $seat[$first]['id'], ];
答案 0 :(得分:1)
我将空更改为!empty现在可以正常工作
focus
答案 1 :(得分:0)
这意味着$ no ['name']或$ key是数组而不是字符串。请同时检查它们。
您应该使用序列化方法将数组转换为字符串,或者创建自己的数组。
答案 2 :(得分:0)
问题出在那一行
$name = empty($seat[$first]['name']) ? $seat[$first]['name'] : $seat_no;
我们在这里看到的
$first = array_shift($seat_no);
$seat_no
是一个数组,所以$name
可能是字符串$seat[$first]['name']
或数组$seat_no
,当它是一个数组时,会出现错误:“ htmlspecialchars()期望参数1为字符串。”
我认为您应该考虑并解决此问题
$name = empty($seat[$first]['name']) ? $seat[$first]['name'] : $seat_no;
这有点奇怪,您检查$seat[$first]['name']
是否为空,然后将其(空值)分配给$name
为帮助我们修复您的代码,请添加$data->seat_layout
和$request->seat_id
值