Как отправить несколько данных в поле зрения с их необходимыми отношениями

#php #html #arrays #laravel #laravel-5.8

Вопрос:

Я работаю над проектом 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 }}">amp;nbsp;</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>
 

Таким образом, в основном администраторы могут выбирать несколько заказов, подобных этому:

введите описание изображения здесь

И я пытаюсь отправить идентификаторы заказов в виде массива:

<input class="form-check-input" name="orderCheck[]" type="checkbox" value="{{ $order->ord_id }}">

Поэтому после нажатия кнопки Распечатать все факторы заказа на одной странице должны отображаться все факторы заказа.

Поэтому, чтобы сделать это, я добавил этот метод в контроллер:

 public function prnpriview(Request $request)
    {
        $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', $args);
    }
 

Однако проблема с этим заключается в том, что он отправляет только последние order , а не все из них.

Код контроллера работал нормально для одного заказа. Но мне нужно передать несколько заказов newprint.blade.php .

Итак, вопрос в том, как отправить все заказы, которые были проверены пользователем, и отправить их на просмотр с их args массивом (обязательные отношения)?

Я был бы очень признателен за любую идею или предложение от вас, ребята, по этому поводу…

Спасибо.


ОБНОВЛЕНИЕ № 1

Вот мой код, в newprint.blade.php котором показаны детали каждого фактора заказа для печати:

 @foreach($args as $arg)
    <p>Order Id:
        <strong>
            {{ digits2persian($order->ord_id) }}
        </strong>
    </p>
    <p>Address:
        <strong>
            {{ $address->province_relation->prv_name }}،
            {{ $address->city_relation->cit_name }}،
            {{ $address->address }}
        </strong>
    </p>
    ...
@endforeach 
 

ОБНОВЛЕНИЕ № 2:

Если я dd($args) раньше return в контроллере, и если я {{ dd($args) }} в представлении, я получу это в результате:

введите описание изображения здесь

Ответ №1:

Ты уже близко 🙂 Вам нужно создать массив массивов с помощью $arg . Прямо сейчас, в цикле, он заменяет значение массива каждый раз, когда он проходит через него.

 $args = [];
foreach($orders as $ord){
    $args[] = [
        ...
    ];
}
 

Комментарии:

1. Затем, глядя на newprint клинок, я сказал @foreach($args as $arg) ... @endforeach : «Но это вернется». Undefined variable: args

2. @KKKKKK попробуй с этим синтаксисом return view('admin.shop.orders.newprint', ['args' => $args]);

3. Я только что добавил свой код в представление newprint.blade.php

4. @KKKKKK, если вы dd($args) перед возвращением и в представлении, и перед началом в лезвии, что вы получите? Вам нужно немного отладить там

5. Попробуйте добавить compact в представление, чтобы отправить переменную с информацией на страницу блейда return view('admin.shop.orders.newprint', compact('args')) @KKKKKK