Php 错误类型必须为array,在laravel中为null

Php 错误类型必须为array,在laravel中为null,php,laravel,Php,Laravel,我尝试使用validator通过laravel验证数据,并将其插入到名为offers的表中,我确信这是真的,我也使用它进行验证 这是我的密码 web.php <?php use Illuminate\Support\Facades\Route; use App\Http\Controllers\Front\UserController; use App\Http\Controllers\CrudController; /* |------------------------------

我尝试使用validator通过laravel验证数据,并将其插入到名为offers的表中,我确信这是真的,我也使用它进行验证 这是我的密码 web.php

<?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']);
});
<?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');
    }
}
<!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>

尝试使用$request->all(to$request->all()

正如另一个答案所指出的,技术解决方案是调用
$request->all()
,而不是引用
$request->all

但是,我想解释一下错误消息,因为这是您需要了解的,以便将来能够解决类似的问题。错误消息告诉您,有一个函数的第一个参数要求传递数组,而不是传递
null
同上:

  • 当参数与类型不同时,可以避免调用函数
  • 您可以修改函数的类型期望
  • 可以将参数转换为正确的类型

它成功地解决了这个问题