簡體   English   中英

錯誤必須是數組類型,laravel 中給出的 null

[英]error must be of type array, null given in laravel

我嘗試使用驗證器通過 laravel 驗證數據,並將其插入到名為 offer 的表中,我確信這是真的,我也用它來驗證,這是我的代碼web.ZE1BFD762321E409CEE4AC0B6E48

<?php

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\Front\UserController;
use App\Http\Controllers\CrudController;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});

Route::namespace('Front')->group(function(){
    Route::get('users',[UserController::class,'showAdminName']);
});
Auth::routes(['verify' =>true]);

Route::get('/home', [App\Http\Controllers\HomeController::class, 'index'])->name('home')->middleware('verified');

Route::get('fillable',[\App\Http\Controllers\CrudController::class,'getOffers']);

Route::group(['prefix'=>'offers'],function(){
//    Route::get('store',[CrudController::class,'store']);
    Route::get('create',[CrudController::class,'createview']);
    Route::post('store',[CrudController::class,'store']);
});

CrudController.php

<?php

namespace App\Http\Controllers;

use App\Models\Offer;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;

class CrudController extends Controller
{
    public function getOffers(){
        return Offer::select('id','name')->get();
    }

    public function createview(){
        return view('offers.create');
    }

    public function store(Request $request){
        // validate data
        $validate = Validator::make($request->all,[
            'name' => 'required|min:5|max:10|unique:offers,name',
            'price' => 'required|numeric',
            'details' => 'required'
        ]);
        // insert
        Offer::create([
            'name' => $request->name,
            'price' => $request->price,
            'details' => $request->details,
        ]);
        return back()->with('offer_created','Saved succesfully');
    }
}

create.blade.php

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-wEmeIV1mKuiNpC+IOBjI7aAzPcEZeedi5yW5f2yOq55WWLwNGmvvx4Um1vskeMj0" crossorigin="anonymous">
    <title>Try laravel</title>
</head>
<body style="background-image: url(https://images.pexels.com/photos/338515/pexels-photo-338515.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260); background-size: cover; ">
    <div class="container" style="padding: 50px;">
        <div class="col-md-6 offset-md-3">
            <div class="card">
                <div class="card-header">
                ADD OFFER
                </div>
                <div class="card-body">
                    @if(Session::has('offer_created'))
                        <div class="alert alert-success">
                            {{ Session::get('offer_created')  }}
                        </div>
                    @endif
                    <form method="POST" action="{{ url('offers\store') }}">
                        @csrf
                        <div class="mb-3">
                            <label for="exampleInputEmail1" class="form-label">Offer Name</label>
                            <input type="text" class="form-control" id="exampleInputEmail1" name="name" aria-describedby="emailHelp">
                        </div>
                        @error('name')
                            <div class="text-danger">
                                {{  $message  }}
                            </div>
                        @enderror
                        <div class="mb-3">
                            <label for="exampleInputPassword1" class="form-label">Offer Price</label>
                            <input type="text" class="form-control" id="exampleInputPassword1" name="price">
                        </div>
                        @error('price')
                        <div class="text-danger">
                            {{  $message  }}
                        </div>
                        @enderror
                        <div class="mb-3">
                            <label for="exampleInputPassword1" class="form-label">Offer details</label>
                            <input type="text" class="form-control" id="exampleInputPassword1" name="details">
                        </div>
                        @error('details')
                        <div class="text-danger">
                            {{  $message  }}
                        </div>
                        @enderror
                        <button type="submit" class="btn btn-primary">Submit</button>
                    </form>
                </div>
            </div>
        </div>
    </div>

    <!-- Scripts -->
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0/dist/js/bootstrap.bundle.min.js" integrity="sha384-p34f1UUtsS3wqzfto5wAAmdvj+osOnFyQFpp4Ua3gs/ZVWx6oOypYoCJhGGScy+8" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.2/dist/umd/popper.min.js" integrity="sha384-IQsoLXl5PILFhosVNubq5LC7Qb9DXgDA9i+tQ8Zj3iwWAwPtgFTxbJ8NT4GN1R8p" crossorigin="anonymous"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0/dist/js/bootstrap.min.js" integrity="sha384-lpyLfhYuitXl2zRZ5Bn2fqnhNAKOAaM/0Kr9laMspuaMiZfGmfwRNFh8HlMy49eQ" crossorigin="anonymous"></script>
</body>
</html>

它給了我這個錯誤

Illuminate\Validation\Factory::make(): 參數 #1 ($data) 必須是數組類型,null 給定,在 C:\xampp\htdocs\starter\vendor\laravel\framework\src\Illuminate\Support\ 中調用Facades\Facade.php 在線 261

正如另一個答案指出的那樣,技術解決方案是調用$request->all()而不是引用$request->all

但是,我想解釋一下錯誤消息,因為這是您需要了解的內容,以便將來能夠解決類似問題。 錯誤消息告訴您,有一個 function 的第一個參數需要傳遞一個數組,但是,而不是傳遞了null 您可以考慮以下選項:

  • 當參數與類型不同時,您可以避免調用 function
  • 您可以修改 function 的類型期望
  • 您可以將參數轉換為正確的類型

嘗試使它 $request->all (to $request->all()

暫無
暫無

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

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