【发布时间】:2021-10-08 07:34:29
【问题描述】:
我正在开发一个 Laravel 5.8 项目,它是一个在线商店。在这个项目中,我想为管理员添加“打印顺序因素”功能。
所以我做了一个这样的表格:
<form method="POST" action="{{ route('orders.newprint') }}">
@csrf
@forelse($orders as $order)
<tr>
<td><input class="form-check-input" name="orderCheck[]" type="checkbox" value="{{ $order->ord_id }}"> </td>
<td>{{ $order->ord_id }}</td>
<td>{{ $order->status_label }}</td>
<td>{{ $order->customer_name }}</td>
<td>{{ $order->ord_total }}</td>
</tr>
@empty
<td colspan="7" class="text-center">No order to show</td>
@endforelse
</form>
所以基本上管理员可以像这样选择多个订单:
我正在尝试将订单 ID 作为数组发送:
<input class="form-check-input" name="orderCheck[]" type="checkbox" value="{{ $order->ord_id }}">
所以在点击Print All Order Factors后,它应该会在一页显示所有的order Factors。
所以为了做到这一点,我在 Controller 中添加了这个方法:
public function prnpriview(Request $request)
{
$args = [];
$orders = $request->input('orderCheck');
foreach($orders as $ord){
$order = Order::find($ord);
$args[] = [
'order' => $order,
'address' => $order->order_address->first(),
'details' => $order->orderDetail,
'sendType' => $order->productSubmit,
'coupons' => $this->cartController->computeDiscountForOutRequests($order->ord_object_id, $order->ord_creator_id),
'user' => User::query()->find($order->ord_creator_id)
];
}
return view('admin.shop.orders.newprint', compact('args'));
}
然后在 Blade 上,我尝试了这个:
@foreach($args as $arg)
<p>Buyer Name:
<strong>
{{ $arg->order->customer_name }}
</strong>
</p>
<p>Address:
<strong>
{{ $arg->address->province_relation->prv_name }}،
{{ $arg->address->city_relation->cit_name }}،
{{ $arg->address->address }}
</strong>
</p>
...
@endforeach
但我收到此错误:
试图获取非对象的属性“顺序”(查看:newprint.blade.php)
【问题讨论】:
-
嗯......你正在将 $args 形成为一个多维数组,而不是一个对象数组。使用数组语法进行测试。即:
@foreach($args as $arg) {{ $arg['order']->customer_name }} -
谢谢你。你可以把它作为答案。 @porloscerrosΨ
标签: php laravel laravel-5.8