Php 错误类型必须为array,在laravel中为null
我尝试使用validator通过laravel验证数据,并将其插入到名为offers的表中,我确信这是真的,我也使用它进行验证 这是我的密码 web.phpPhp 错误类型必须为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; /* |------------------------------
<?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
同上:
- 当参数与类型不同时,可以避免调用函数
- 您可以修改函数的类型期望
- 可以将参数转换为正确的类型
它成功地解决了这个问题