无法在Laravel 5.8

时间:2019-07-14 21:59:38

标签: php laravel laravel-5.8

我在使用Illuminate\Http\Request类检索表单值时遇到麻烦。

我有一个可以创建产品的端点,而另一个可以像这样设置更新

的端点
Route::post('products', 'ProductController@store');

Route::put('products/{product}', 'ProductController@update');

store中的updateProductController方法是

public function store(Request $request)
{
    // validate inputs
    $validator = Validator::make($request->all(), [
        'name'      => 'required',
        'category'  => 'required',
        'status'    => 'required',
        'price'     => 'required',
        'image'     => 'required|image|mimes:jpeg',
        'interest'  => 'required'
    ]);

    // return 401 response if validation fails
    if ($validator->fails()) {
        return response()->json([$validator->errors()], 401);
    }

    // create & store the product
    if ($product = Product::create([
        'name'      => $request->name,
        'category'  => $request->category,
        'status'    => $request->status,
        'price'     => $request->price,
        'interest'  => $request->interest,
    ])) {
        // store the product image
        $file = $request->file('image');
        $destinationPath = "public/images/products";
        $filename = 'pramopro_' . $product->name . '_' . $product->id . '.' . $file->extension();

        Storage::putFileAs($destinationPath, $file, $filename);

        ProductImage::create([
            'product_id'    => $product->id,
            'name'          => $filename
        ]);
    }

    // return new product
    return new ProductResource($product);
}

public function update(Request $request, Product $product)
{
    // dd($request);

    // validate inputs
    $validator = Validator::make($request->all(), [
        'name'      => 'required',
        'category'  => 'required',
        'status'    => 'required',
        'price'     => 'required',
        'image'     => 'required|image|mimes:jpeg',
        'interest'  => 'required'
    ]);

    // return 401 response if validation fails
    if ($validator->fails()) {
        return response()->json([$validator->errors()], 401);
    }

    // update this product
    if ($product) {
        $product->update($request->all());

        return new ProductResource($product);
    } else {
        return response()->json(["error" => "Not found"], 404);
    }
}

现在,当我在邮递员中测试端点时,可以成功创建新的产品记录。但是,如果我尝试更新产品,即使填写了所有必填字段,也会出现401 unauthorized错误。 dd($request)返回null,但dd($product)返回预期的产品。

也许我一直在努力地研究它,所以错过了一些东西。我在做什么错了?

1 个答案:

答案 0 :(得分:0)

这就是我认为$request返回null的原因

  • 存储和更新请求具有相同的名称。在同一网页中,两个输入名称或选择名称或文本区域名称不能相同。如果相同,它将始终获得第一个,这是由于第一个为空而返回null的原因。
  • 您叫的名字不正确

希望有帮助!