簡體   English   中英

如何將條形碼存儲在 Laravel 的驗證請求中

[英]How can I store barcode inside validate request in Laravel

我在商店 function 上有一個代碼,用於保存產品詳細信息。 但是,條形碼總是返回空。 我不知道如何用Product::create($data);'保存它 . 我可以問一些方向嗎?

$data = new Product;
$data->name = $request->name;

我需要在上面的object上一一保存嗎?

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Product;
use Picqer;

class ProductsController extends Controller
{
    public function index() {
        $products = Product::orderBy('id')->get();
        return view('products.index', compact('products'));
    }

    public function show(Product $product) {
        return view('products.show', ['product' =>  $product]);
    }
    
    public function create() {
        $products = Product::all();
        return view('products.create', compact('products'));
    }

    public function edit(Product $product) {
        return view('products.edit', compact('product'));
    }

    public function update(Request $request, Product $product) {
        $request->validate([
            'code' => 'required',
            'barcode' => 'required',
            'name' => 'required',
            'description' => 'required|string|max:250',
            'unit' => 'required|int',
            'cost' => 'required',
            'srp' => 'required',
            'supplier' => 'required|string|max:250',
            'quantity_left' => 'required',
            'category' => 'required|string|max:250',
            'delivered_date' => 'required|date',
            'expiration_date' => 'required|date'
        ]);
        $product->code = $request->code;
        $product->barcode = $request->barcode;
        $product->name = $request->name;
        $product->description = $request->description;
        $product->unit = $request->unit;
        $product->cost = $request->cost;
        $product->srp = $request->srp;
        $product->supplier = $request->supplier;
        $product->quantity_left = $request->quantity_left;
        $product->category = $request->category;
        $product->delivered_date = $request->delivered_date;
        $product->expiration_date = $request->expiration_date;
        $product->save();
        return redirect()->route('products.index');
    }

    public function store(Request $request) {
        $code = $request->code;
        $generator = new Picqer\Barcode\BarcodeGeneratorHTML();
        $barcode = $generator->getBarcode($code, $generator::TYPE_CODE_128);
        
        $data = $request->validate([
            'code' => 'required',
            'barcode' => 'max:15|nullable',
            'name' => 'required',
            'description' => 'required|string|max:250',
            'unit' => 'required|int',
            'cost' => 'required',
            'srp' => 'required',
            'supplier' => 'required|string|max:250',
            'quantity_left' => 'required',
            'category' => 'required|string|max:250',
            'delivered_date' => 'required|date',
            'expiration_date' => 'required|date'
        ]);


        Product::create($data);

        return redirect()->route('products.index')->with('success', 'Product has been added!');
    }

    public function destroy(Product $product) {
        $product->delete();
        return back();
    }
}

我想我只是錯過了一些東西。 我用過這個框架: https://github.com/picqer/php-barcode-generator

您需要用您生成的條形碼覆蓋來自請求的條形碼。


    $product = new Product();
    $product->name = 'some name';
    ...
    $product->barcode = $barcode;
    $product->save();

我通過合並兩個 arrays 來完成這項工作:

$data = array_merge($data, ['barcode' => $barcode]);
Product::create($data);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM