Laravel 表单未向数据库提交数据
Laravel form not submitting data to database
出于某种原因,我的表单没有向数据库提交任何数据,但从我现在的位置来看它看起来很好,而且数据库可以很好地调用表单中的信息。
由于要提交的信息很多,我将配置文件详细信息设置为不作为登录过程的一部分。仍然不熟悉 Laravel 是如何做这些的,但我现在已经大致了解了这个过程,因为我一直在摆弄。
我想知道的一件事是,是否存在用于将表单写入数据库的特定语法,我是否应该在表单中命名数据库各自的 table 名称?还是控制器的一部分?
我应该使用表单模型绑定吗?不过,要找到有关 Laravel 当前版本的信息有点困难。
我错过了什么?
//Route::get('NewUser', 'UserEntryController@create');
Route::post('NewUser', 'UserEntryController@UserForm');
//Route::get('NewUser', 'UserEntryController@create')->name('NewUser');
Route::post('NewUser', 'UserEntryController@UserForm')->name('submit');
控制器:
<?php
namespace App\Http\Controllers;
use App\UserEdit;
use Illuminate\Http\Request;
use DB;
use App\Http\Requests;
class UserEntryController extends Controller
{
protected function create()
{
$id = UserEdit::find(715)->toArray();
return view('NewUser', compact('id'));
//return $array;
}
public function UserForm(Request $request) {
$email = $request['email'];
$first_name = $request['first_name'];
$password_hint = $request['password_hint'];
$last_name = $request['last_name'];
$user = UserEdit::find(715)->first();
$user->email = $email;
$user->First_Name = $first_name;
$user->Last_Name = $last_name;
$user->Password_Hint = $password_hint;
$user->save();
$id = UserEdit::find(715)->toArray();
return view('NewUser', compact('id'));
}
}
Blade:
@extends('layout')
@section('content')
<h1> Add Your Information {{ $id['name'] }}</h1>
<div class="row">
<div class="col-md-6">
<h3>Edit</h3>
<form action="{{ route('submit') }}" method="post">
<div class="form-group">
{{ csrf_field() }}
<label for="email">Your E-Mail</label>
<input class="form-control" type="text" name="email" id="email">
</div>
<div class="form-group">
{{ csrf_field() }}
<label for="first_name">Your First Name</label>
<input class="form-control" type="text" name="first_name" id="first_name">
</div>
<div class="form-group">
{{ csrf_field() }}
<label for="last_name">Your Last Name</label>
<input class="form-control" type="text" name="last_name" id="last_name">
</div>
<div class="form-group">
{{ csrf_field() }}
<label for="password_hint">Your Password Hint</label>
<input class="form-control" type="text" name="password_hint" id="password_hint">
</div>
<button type="submit" class="btn btn-primary">Submit</button>
<input type="hidden" name="_token" value="{{ Session::token() }}">
</form>
</div>
</div>
@foreach ($id as $key=>$value)
{{ $value }}<br>
@endforeach
@stop
您应该使用 $request->get('email')
而不是 $request['email']
并且对于您希望从请求中获得的所有其他内容也是如此,而且我认为您在使用 [ 时不必使用 ->first()
=13=]
_token 字段可能有问题,因为表单中有五个 csrf 字段。
尝试删除此行
<input type="hidden" name="_token" value="{{ Session::token() }}">
并在表格中留下一个 {{ csrf_field() }}。
出于某种原因,我的表单没有向数据库提交任何数据,但从我现在的位置来看它看起来很好,而且数据库可以很好地调用表单中的信息。
由于要提交的信息很多,我将配置文件详细信息设置为不作为登录过程的一部分。仍然不熟悉 Laravel 是如何做这些的,但我现在已经大致了解了这个过程,因为我一直在摆弄。
我想知道的一件事是,是否存在用于将表单写入数据库的特定语法,我是否应该在表单中命名数据库各自的 table 名称?还是控制器的一部分?
我应该使用表单模型绑定吗?不过,要找到有关 Laravel 当前版本的信息有点困难。
我错过了什么?
//Route::get('NewUser', 'UserEntryController@create');
Route::post('NewUser', 'UserEntryController@UserForm');
//Route::get('NewUser', 'UserEntryController@create')->name('NewUser');
Route::post('NewUser', 'UserEntryController@UserForm')->name('submit');
控制器:
<?php
namespace App\Http\Controllers;
use App\UserEdit;
use Illuminate\Http\Request;
use DB;
use App\Http\Requests;
class UserEntryController extends Controller
{
protected function create()
{
$id = UserEdit::find(715)->toArray();
return view('NewUser', compact('id'));
//return $array;
}
public function UserForm(Request $request) {
$email = $request['email'];
$first_name = $request['first_name'];
$password_hint = $request['password_hint'];
$last_name = $request['last_name'];
$user = UserEdit::find(715)->first();
$user->email = $email;
$user->First_Name = $first_name;
$user->Last_Name = $last_name;
$user->Password_Hint = $password_hint;
$user->save();
$id = UserEdit::find(715)->toArray();
return view('NewUser', compact('id'));
}
}
Blade:
@extends('layout')
@section('content')
<h1> Add Your Information {{ $id['name'] }}</h1>
<div class="row">
<div class="col-md-6">
<h3>Edit</h3>
<form action="{{ route('submit') }}" method="post">
<div class="form-group">
{{ csrf_field() }}
<label for="email">Your E-Mail</label>
<input class="form-control" type="text" name="email" id="email">
</div>
<div class="form-group">
{{ csrf_field() }}
<label for="first_name">Your First Name</label>
<input class="form-control" type="text" name="first_name" id="first_name">
</div>
<div class="form-group">
{{ csrf_field() }}
<label for="last_name">Your Last Name</label>
<input class="form-control" type="text" name="last_name" id="last_name">
</div>
<div class="form-group">
{{ csrf_field() }}
<label for="password_hint">Your Password Hint</label>
<input class="form-control" type="text" name="password_hint" id="password_hint">
</div>
<button type="submit" class="btn btn-primary">Submit</button>
<input type="hidden" name="_token" value="{{ Session::token() }}">
</form>
</div>
</div>
@foreach ($id as $key=>$value)
{{ $value }}<br>
@endforeach
@stop
您应该使用 $request->get('email')
而不是 $request['email']
并且对于您希望从请求中获得的所有其他内容也是如此,而且我认为您在使用 [ 时不必使用 ->first()
=13=]
_token 字段可能有问题,因为表单中有五个 csrf 字段。
尝试删除此行
<input type="hidden" name="_token" value="{{ Session::token() }}">
并在表格中留下一个 {{ csrf_field() }}。