PHP laravel 对象未在 5.8 中创建
PHP laravel object not creating in 5.8
我有一个 PHP Laravel CRUD 应用程序,我在使用 MVC 样式的地方创建了该应用程序。我有控制器视图和模型。我的数据库迁移已经完成,数据库中的 table 是使用 php artisan migrate 完成的。我正在使用 php 7.3 和 laravel 5.8。
在我的创建视图中,我去在我的数据库中创建一个对象,我的错误被抛出,在文本框中什么也没说(没有输入)如果我注释掉错误然后我点击我的提交按钮并且没有任何反应没有输入我的数据库.我看过许多不同的 crud 示例,但我不确定为什么我的对象没有被创建。这是我所拥有的
我的环境设置正确我只是没有得到不创建对象。
//view create
@section('main')
<section id="section-content" class="text-center">
<div class="container contentdiv rounded">
<div class="row">
<div class="col-md-12">
<div class="pb-2 mt-4 mb-2 border-bottom clearfix">
<h2>Create Contact</h2>
</div>
<div >
<a class="btn btn-success" href="{{route('contacts.index')}}">Back</a>
</div>
</div>
<!-- <div class="col-md-10 mx-auto">
@if($errors->any())
<div class="alert alert-danger">
<ul>
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div><br />
@endif
</div> -->
<div class="row">
<div class="col-md-10 mx-auto mt-3">
<form method="POST" action="{{ route('contacts.store') }}">
@csrf
<div class="form-group row">
<label for="txtfn" class="col-sm-3"><b>First Name:</b></label>
<div class="col-sm-9">
<input type="text" class="form-control" name="txtfn" id="txtfn"/>
</div>
</div>
<div class="form-group row">
<label for="txtln" class="col-sm-3"><b>Last Name:</b></label>
<div class="col-sm-9">
<input type="text" class="form-control" name="txtln" id="txtln"/>
</div>
</div>
<div class="form-group row">
<label for="txtem" class="col-sm-3"><b>Email:</b></label>
<div class="col-sm-9">
<input type="text" class="form-control" name="txtem" id="txtem"/>
</div>
</div>
<button type="submit" class="btn btn-primary">Create Contact</button>
</form>
</div>
</div>
</div>
</section>
//controller
namespace App\Http\Controllers;
use App\Contact;
use Illuminate\Http\Request;
class ContactController extends Controller
{
public function store(Request $request)
{
$request->validate([
'first_name' => 'required',
'last_name' => 'required',
'email' => 'required'
]);
$contact = new Contact([
'first_name' => $request->get('first_name'),
'last_name' => $request->get('last_name'),
'email' => $request->get('email'),
'job_title' => $request->get('job_title'),
'city' => $request->get('city'),
'country' => $request->get('country')
]);
$contact->save();
return redirect('/contacts')->with('success', 'Contact saved!');
}
public function index()
{
$contacts = Contact::all();
return view('contacts.index', compact('contacts'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('contacts.create');
}
// model
namespace App;
use Illuminate\Database\Eloquent\Model;
class Contact extends Model
{
protected $fillable = [
'first_name',
'last_name',
'email',
'city',
'country',
'job_title'
];
}
您的问题是您输入的名称与您在 store()
方法中引用的键不对应:
例如:
<input type="text" class="form-control" name="txtfn" id="txtfn"/>
在这里,您输入的名字是txtfn
,但是在您的存储方法中,您正在寻找first_name
。
'first_name' => $request->get('first_name')
所以,$request->get('first_name')
returns null
就像你没有传递任何值一样。
您必须通过更改输入名称或更改键名称,使您的输入名称与您在存储方法中使用的键匹配。
示例:
<input type="text" class="form-control" name="first_name" />
<input type="text" class="form-control" name="last_name" />
<input type="text" class="form-control" name="email" />
我有一个 PHP Laravel CRUD 应用程序,我在使用 MVC 样式的地方创建了该应用程序。我有控制器视图和模型。我的数据库迁移已经完成,数据库中的 table 是使用 php artisan migrate 完成的。我正在使用 php 7.3 和 laravel 5.8。 在我的创建视图中,我去在我的数据库中创建一个对象,我的错误被抛出,在文本框中什么也没说(没有输入)如果我注释掉错误然后我点击我的提交按钮并且没有任何反应没有输入我的数据库.我看过许多不同的 crud 示例,但我不确定为什么我的对象没有被创建。这是我所拥有的 我的环境设置正确我只是没有得到不创建对象。
//view create
@section('main')
<section id="section-content" class="text-center">
<div class="container contentdiv rounded">
<div class="row">
<div class="col-md-12">
<div class="pb-2 mt-4 mb-2 border-bottom clearfix">
<h2>Create Contact</h2>
</div>
<div >
<a class="btn btn-success" href="{{route('contacts.index')}}">Back</a>
</div>
</div>
<!-- <div class="col-md-10 mx-auto">
@if($errors->any())
<div class="alert alert-danger">
<ul>
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div><br />
@endif
</div> -->
<div class="row">
<div class="col-md-10 mx-auto mt-3">
<form method="POST" action="{{ route('contacts.store') }}">
@csrf
<div class="form-group row">
<label for="txtfn" class="col-sm-3"><b>First Name:</b></label>
<div class="col-sm-9">
<input type="text" class="form-control" name="txtfn" id="txtfn"/>
</div>
</div>
<div class="form-group row">
<label for="txtln" class="col-sm-3"><b>Last Name:</b></label>
<div class="col-sm-9">
<input type="text" class="form-control" name="txtln" id="txtln"/>
</div>
</div>
<div class="form-group row">
<label for="txtem" class="col-sm-3"><b>Email:</b></label>
<div class="col-sm-9">
<input type="text" class="form-control" name="txtem" id="txtem"/>
</div>
</div>
<button type="submit" class="btn btn-primary">Create Contact</button>
</form>
</div>
</div>
</div>
</section>
//controller
namespace App\Http\Controllers;
use App\Contact;
use Illuminate\Http\Request;
class ContactController extends Controller
{
public function store(Request $request)
{
$request->validate([
'first_name' => 'required',
'last_name' => 'required',
'email' => 'required'
]);
$contact = new Contact([
'first_name' => $request->get('first_name'),
'last_name' => $request->get('last_name'),
'email' => $request->get('email'),
'job_title' => $request->get('job_title'),
'city' => $request->get('city'),
'country' => $request->get('country')
]);
$contact->save();
return redirect('/contacts')->with('success', 'Contact saved!');
}
public function index()
{
$contacts = Contact::all();
return view('contacts.index', compact('contacts'));
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('contacts.create');
}
// model
namespace App;
use Illuminate\Database\Eloquent\Model;
class Contact extends Model
{
protected $fillable = [
'first_name',
'last_name',
'email',
'city',
'country',
'job_title'
];
}
您的问题是您输入的名称与您在 store()
方法中引用的键不对应:
例如:
<input type="text" class="form-control" name="txtfn" id="txtfn"/>
在这里,您输入的名字是txtfn
,但是在您的存储方法中,您正在寻找first_name
。
'first_name' => $request->get('first_name')
所以,$request->get('first_name')
returns null
就像你没有传递任何值一样。
您必须通过更改输入名称或更改键名称,使您的输入名称与您在存储方法中使用的键匹配。
示例:
<input type="text" class="form-control" name="first_name" />
<input type="text" class="form-control" name="last_name" />
<input type="text" class="form-control" name="email" />