#laravel
Вопрос:
Я пытаюсь вставить данные в Laravel с помощью БД
код:
web.php
<?php
use IlluminateSupportFacadesRoute;
use AppHttpControllersExamController;
Route::get('/', [ExamController::class, 'Index']);
Route::post('/exam-sub', [ExamController::class, 'Insertexam'])->name('sub')
welcome.blade.php
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="{{ URL::asset('css/test.css') }}" />
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-eOJMYsd53ii scO/bJGFsiCZc 5NDVN2yr8 0RDqr0Ql0h rP48ckxlpbzKgwra6" crossorigin="anonymous">
<title>Quiz app</title>
</head>
<body bgcolor="green">
<form action="{{ route('sub') }}" method="post">
@csrf
<div class="container mb-3">
@if(Session::has('exam_submitted'))
<div class="alert alert-success">
{{ Session::get('exam_submitted') }}
</div>
@endif
<div class="form-outline">
<label class="form-label" for="form3Example1">First name</label>
<input type="text" id="form3Example1" class="form-control" name="first_name"/>
@error('first_name')
<span class="text-danger">{{ $message }}</span>
@enderror
</div>
<div class="form-outline">
<label class="form-label" for="form3Example1">SEC NAME</label>
<input type="text" id="form3Example1" class="form-control" name="sec_name"/>
@error('sec_name')
<span class="text-danger">{{ $message }}</span>
@enderror
</div>
<div class="form-outline">
<label class="form-label" for="form3Example1">EMAIL</label>
<input type="text" id="form3Example1" class="form-control" name="email"/>
@error('email')
<span class="text-danger">{{ $message }}</span>
@enderror
</div>
<div class="form-outline">
<label class="form-label" for="form3Example1">PASSWORD</label>
<input type="password" id="form3Example1" class="form-control" name="password"/>
@error('password')
<span class="text-danger">{{ $message }}</span>
@enderror
</div>
<h1 class="color-grey">test</h1>
<hr style="width: 30%; font-weight: 700; height:3px; background-color:black;">
<div class="form-outline">
<label class="form-label" for="form3Example1">24x90</label>
<input type="text" id="form3Example1" class="form-control" name="question1"/>
@error('question-1')
<span class="text-danger">{{ $message }}</span>
@enderror
</div>
<div class="form-outline">
<label class="form-label" for="form3Example1">45x80</label>
<input type="text" id="form3Example1" class="form-control" name="question2" />
@error('question-2')
<span class="text-danger">{{ $message }}</span>
@enderror
</div>
<div class="form-outline">
<label class="form-label" for="form3Example1">100x10</label>
<input type="text" id="form3Example1" class="form-control" name="question3"/>
@error('question-3')
<span class="text-danger">{{ $message }}</span>
@enderror
</div>
<div class="form-outline">
<label class="form-label" for="form3Example1">10x10</label>
<input type="text" id="form3Example1" class="form-control" name="question4"/>
@error('question-4')
<span class="text-danger">{{ $message }}</span>
@enderror
</div>
<br>
<button class="btn btn-outline-primary btn-block btn-lg">Submit test</button>
</div>
</form>
<div class="btn"></div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/js/bootstrap.bundle.min.js" integrity="sha384-JEW9xMcG8R pH31jmWH6WWP0WintQrMb4s7ZOdauHnUtxwoG2vI5DkLtS3qm9Ekf" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.1/dist/umd/popper.min.js" integrity="sha384-SR1sx49pcuLnqZUnnPwx6FCym0wLsk5JZuNx2bPPENzswTNFaQU1RDvt3wT4gWFG" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta3/dist/js/bootstrap.min.js" integrity="sha384-j0CNLUeiqtyaRmlzUHCPZ Gy5fQu0dQ6eZ/xAww941Ai1SxSY 0EQqNXNE6DZiVc" crossorigin="anonymous"></script>
</body>
</html>
Контролер экзамена
<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesDB;
class ExamController extends Controller
{
public function Index() {
return view('welcome');
}
public function Insertexam(Request $request) {
$validatedata = $request->validate([
'id' => mt_rand(1, 1000),
'first_name' => 'required',
'sec_name' => 'required',
'email'=> 'required|email',
'password' => 'required|min:8|max:24',
'question-1' => 'required|int',
'question-2' => 'required|int',
'question-3' => 'required|int',
'question-4' => 'required|int',
]);
DB::table('exam')->insert([
'Firstname' => $request->first_name,
'Secondname' => $request->body,
'email' => $request->email,
'password' => $request->password,
'question1' => $request->question1,
'question2' => $request->question2,
'question3' => $request->question3,
'question4' => $request->question4,
]);
return back()->with('exam_submitted','Exam submitted successfully contact you mr for the results good luck');
}
}
Проблема в том, что при вставке данных это показывает следующее:
array_map(): Argument #2 ($array) must be of type array, int given
Ответ №1:
Проблема в том, что этот «идентификатор» = > mt_rand(1, 1000), попробуйте удалить его.
$validatedata = $request->validate([
'id' => mt_rand(1, 1000),
'first_name'=> 'required',
'sec_name'=>'required',
'email'=> 'required|email',
'password' => 'required|min:8|max:24',
'question-1' => 'required|int',
'question-2' => 'required|int',
'question-3' => 'required|int',
'question-4' => 'required|int',
]);
Комментарии:
1. спасибо, я забыл, что это большая ошибка с моей стороны
2. объясните ему проблему, ваш ответ требует образовательного объяснения
3. @CoderMoataz — Проблема в том, что метод проверки принимает массив с правилами проверки, которые будут применены к входным параметрам из запроса. mt_rand(1,1000) не является правилом проверки. Пожалуйста, проверьте: laravel.com/docs/8.x/validation