Я разрабатываю систему инвентаря, используя Laravel.
Все шло как ожидалось, пока я не столкнулся с проблемой при проверке формы.
Итак, ниже моя функция вставки в коде моего контроллера заказов,
public function insert(Request $request) {
// Save data to "orders" table
$orderer = [
'orderId' => $request->get('orderId'),
'customerId' => $request->get('customerId'),
'orderTotal' => $request->get('orderTotal'),
'paymentMethodId' => $request->get('paymentMethodId'),
'orderStatusId' => $request->get('orderStatusId'),
'created_at' => \Carbon\Carbon::now(), # \Datetime()
'updated_at' => \Carbon\Carbon::now() # \Datetime()
];
// Looping on dynamic "New Added" input field
$orderedItems_Sku = $request->get('productSku');
foreach($orderedItems_Sku as $key => $v)
{
$productSku = $request->get('productSku') [$key];
$product = \App\Product::find($productSku);
$rules = [
'orderId' => 'unique:orders',
'customerId' => 'required',
'orderStatusId' => 'required',
'paymentMethodId' => 'required',
'uomId.*' => 'required',
'productSku.*' => 'required',
'productQty.*' => 'required',
// 'lte' means Less Than or Equal to available stock quantity
'orderQty.*' =>
'required|numeric|min:1|lte:'.$product['productQty'],
'orderPrice.*' => 'required'
];
$messages = [
'customerId.required' => 'Please select Customer',
'orderStatusId.required' => 'Please select Order Status',
'paymentMethodId.required' => 'Please select Payment Method',
'uomId.*.required' => 'Please select UOM',
'productSku.*.required' => 'Please select Product',
'orderQty.*.required' => 'Please enter Order Quantity',
'orderQty.*.min' => 'Quantity must be at least 1',
'orderQty.*.lte' => 'Quantity of product no.
'.$product['productSku'].' must be not greater than
'.$product['productQty'],
'orderPrice.*.required' => 'Please enter Product Price'
];
// Validate "Rules" and "Messages" to running.
$this->validate($request, $rules, $messages);
$data = [
'orderId' => $request->get('orderId'),
'productSku' => $v,
'orderQty' => $request->get('orderQty') [$key],
'uomId' => $request->get('uomId'),
'orderPrice' => $request->get('orderPrice') [$key],
'orderDiscount' => $request->get('orderDis') [$key],
'orderPerAmount' => $request->get('orderPerAmount') [$key],
'created_at' => \Carbon\Carbon::now(), # \Datetime()
'updated_at' => \Carbon\Carbon::now() # \Datetime()
];
\App\orderedItem::insert($data);
// "Decrement" means, product quantity will be deducted based on how
much quantity that customer has ordered.
\App\Product::where("productSku", $v)->decrement("productQty",
$request->orderQty [$key]);
}
\App\Order::insert($orderer);
return redirect('orders')->with('success', 'Order Successfully Added!');
}
Вот мой HTML-код внутри create.blade.php,
https://pastebin.com/cn2X1aVL
как видите, есть поля "orderQty" и "productQty".
Итак, я пытаюсь проверить динамическое поле "orderQty" с помощью динамического поля "productQty", чтобы пользователь не мог ввести количество, большее, чем значение, в поле "productQty".
Я также использую команду lte (меньше чем равно) внутри массива $ rules в моем коде в соответствии с рекомендациями большинства сообществ laravel.
Эта вещь прекрасно работает только на одном входе, но не на динамически добавленном. Обратитесь к изображению ниже, вы можете видеть, что второй вход продукта не проверен должным образом, как я хотел.
создание файла блейда
даже сообщения об ошибках, не отображающие динамическое сообщение как требуется.
Пожалуйста, помогите мне выяснить, в чем проблема. Я пробовал так много решений, но все еще не работает. : '(