Я хочу создать регистрационную форму. Итак, я создал файл RegShortController.php
и после создания файла вида RegShort.blade.php
. В файле RegShortController.php
я использовал функцию с именем insert. Но, когда я запускаю веб-сайт, я получил эту ошибку -
"
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'name' cannot be null (SQL: insert into
академическое(
имя,
имя пользователя,
pw) values (,, ))
,) values (,, ))
"
Итак, как исправить это?
Вот файл RegShort.blade.php
К сожалению, я удалил атрибуты имени в имени пользователя и пароле, когда редактирую этот поток. Теперь я это исправил.
<form action="{{ route('RegShort') }}" method="post" enctype="multipart/form-data">
{{ csrf_field() }}
<div class="form-group">
<label>Name : *</label>
<input type="text" class="form-control" name="name">
</div>
<div class="form-group">
<label>Username : *</label>
<input type="text" class="form-control" name="username" required>
</div>
<div class="form-group">
<label>Password : *</label>
<input type="password" class="form-control" name="password">
</div>
<button type="submit" class="btn btn-primary" name="submit">Submit</button>
</form>
Вот файл RegShortController.php
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
class RegShortController extends Controller
{
public function index()
{
return view('RegShort');
}
function insert(Request $req)
{
$name = $req->input('name');
$username = $req->input('username');
$password = $req->input('password');
$data = array("name"=>$name,'username'=>$username,"pw"=>$password);
DB::table('academic')->insert($data);
}
}
Вот маршрут, который я создал.
Route::any('/RegShort', 'RegShortController@insert')->name('RegShort');
поле name
должно быть не пустым, поэтому вы должны проверить данные перед их вставкой (проверка на стороне сервера):
function insert(Request $req)
{
$this->validate($req, [
'name' => 'required'
]);
$name = $req->input('name');
$username = $req->input('username');
$password = $req->input('password');
$data = array("name"=>$name,'username'=>$username,"pw"=>$password);
DB::table('academic')->insert($data);
}
BTW было бы хорошо проверить данные с помощью javascript, а также перед отправкой данных на сервер (проверка на стороне клиента).
Редактировать ur HTML, uve пропущенные атрибуты имени для входов ur:
<form action="{{ route('RegShort') }}" method="post" enctype="multipart/form-data">
{{ csrf_field() }}
<div class="form-group">
<label>Name : *</label>
<input type="text" class="form-control" name="name">
</div>
<div class="form-group">
<label>Username : *</label>
<input type="text" class="form-control" name="username" required>
</div>
<div class="form-group">
<label>Password : *</label>
<input type="password" name="password" class="form-control">
</div>
<button type="submit" class="btn btn-primary" name="submit">Submit</button>
</form>
Также измените маршруты ur:
Route::get('/RegShort', 'RegShortController@index')->name('RegShort');
Route::post('/RegShort', 'RegShortController@insert');
name
действительно необходимо, он также может добавить к нему required
атрибут.
Кажется, что вы не можете получить данные из объекта $ req. Обязательно проверьте свои данные перед вставкой в таблицу.
у вас нет атрибута имени для имени пользователя и пароля
<div class="form-group">
<label>Name : *</label>
<input type="text" class="form-control" name="name">
</div>
<div class="form-group">
<label>Username : *</label>
<input type="text" name="username" class="form-control" required>
</div>
<div class="form-group">
<label>Password : *</label>
<input type="password" name="password" class="form-control">
</div>
Попробуйте обновить html:
Вы являетесь messing: атрибут name здесь
<input type="text" name="username" class="form-control" required>
<input type="password" name="password" class="form-control">
Код:
<form action="{{ route('RegShort') }}" method="post" enctype="multipart/form-data">
{{ csrf_field() }}
<div class="form-group">
<label>Name : *</label>
<input type="text" class="form-control" name="name">
</div>
<div class="form-group">
<label>Username : *</label>
<input type="text" name="username" class="form-control" required>
</div>
<div class="form-group">
<label>Password : *</label>
<input type="password" name="password" class="form-control">
</div>
<button type="submit" class="btn btn-primary" name="submit">Submit</button>
</form>
Model
..?