php - Laravel eloquent 无法将数据提交到数据库
问题描述
我正在使用 eloquent 将数据存储在 laravel 中,我在“/”页面上有表单,可以在登录前提交数据,并且我希望该数据显示在登录后我在管理页面上创建的表格上。问题是,在我点击提交按钮后,什么都没有发生,只是回到“/”页面,表单的数据甚至没有存储到数据库中。有什么建议吗,专家?
这是我的一段代码:
网页.php
Route::get('/', 'FrontController@home')->name('home');
Route::get('/login', 'FrontController@login')->name('login');
Route::post('/form', 'FrontController@create')->name('buat');
Auth::routes();
Route::get('/home', 'AdminController@index')->name('admin');
Route::get('/masuk', 'AdminController@masuk')->name('masuk');
Route::get('/keluar', 'AdminController@keluar')->name('keluar');
Route::get('/logout', '\App\Http\Controllers\Auth\LoginController@logout')->name('logout');
Parking.php(用于雄辩)
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Parking extends Model
{
protected $fillable = ['nopol'];
}
FrontController(访客页面)
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
use App\Parking;
class FrontController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('guest');
}
public function home () {
return view ('home');
}
public function login () {
return view ('login');
}
public function create(Request $request)
{
$request->validate([
'jenis' => 'in:Motor,Mobil',
'kategori' => 'in:Umum,Karyawan',
'nopol' => 'required|string',
]);
$park = Parking::create([
'jenis' => $request->input('jenis'),
'kategori' => $request->input('kategori'),
'nopol' => $request->input('nopol'),
]);
return back()-> with('success', 'Silakan masuk! ID parkir anda '. $park->id .' dengan nomor polisi '. $park->nopol);
}
}
AdminController(管理页面)
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use DB;
use App\Parking;
class AdminController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
return view('admin');
}
public function masuk(Request $request)
{
$park = Parking::all();
//$hobbies = Hobby::with('user')->get();
return view('masuk', ['park' => $park]);
}
public function keluar()
{
return view('keluar');
}
}
home.blade.php(访客页面)
<!-- start: Form Elements -->
<div class="row-fluid sortable" style="position: absolute; bottom: 30%; left: 30%">
<div class="box span4">
<div class="box-header" data-original-title>
<h2><i class="halflings-icon white edit"></i><span class="break"></span>Input Kendaraan Masuk</h2>
<div class="box-icon">
<a href="#" class="btn-setting"><i class="halflings-icon white wrench"></i></a>
<a href="#" class="btn-minimize"><i class="halflings-icon white chevron-up"></i></a>
<a href="#" class="btn-close"><i class="halflings-icon white remove"></i></a>
</div>
</div>
<div class="box-content">
<form class="form-vertical" id="form-masuk" method="POST" action="{{ route('buat') }}">
{{ csrf_field() }}
<fieldset>
<div class="control-group">
<label class="control-label" for="typeahead">Jenis Kendaraan</label>
<div class="controls">
<select id="opt-jenis" name="jenis">
<option value="Motor">Motor</option>
<option value="Mobil">Mobil</option>
</select>
</div>
</div>
<div class="control-group">
<label class="control-label" for="typeahead">Kategori Kendaraan</label>
<div class="controls">
<select id="opt-kategori" name="kategori">
<option value="Umum">Umum</option>
<option value="Karyawan">Karyawan</option>
</select>
</div>
</div>
<div class="control-group">
<label class="control-label" for="typeahead">Nomor Polisi</label>
<div class="controls">
<input class="span6 typeahead" id="nopol" type="text">
</div>
</div>
<div class="form-actions">
<button type="submit" form="form-masuk" class="btn btn-primary">Masuk</button>
<button type="reset" class="btn" >Batal</button>
</div>
</fieldset>
</form>
</div>
</div><!--/span-->
</div><!--/row-->
</div><!--/.fluid-container-->
masuk.blade.php(显示表格的管理页面)
<div class="row-fluid sortable">
<div class="box span12">
<div class="box-header" data-original-title>
<h2><i class="halflings-icon white user"></i><span class="break"></span>Mobil</h2>
<div class="box-icon">
<a href="#" class="btn-setting"><i class="halflings-icon white wrench"></i></a>
<a href="#" class="btn-minimize"><i class="halflings-icon white chevron-up"></i></a>
<a href="#" class="btn-close"><i class="halflings-icon white remove"></i></a>
</div>
</div>
<div class="box-content">
<table class="table table-striped table-bordered bootstrap-datatable datatable">
<thead>
<tr>
<th>ID</th>
<th>Nomor Polisi</th>
<th>Waktu Masuk</th>
<th>Jenis Kendaraan</th>
<th>Kategori Kendaraan</th>
<th>Status</th>
</tr>
</thead>
<tbody>
@foreach ($park as $p)
<tr>
<td>{{ $p->id }}</td>
<td>{{ $p->nopol }}</td>
<td class="center">{{ $p->created_at }}</td>
<td class="center">{{ $p->jenis }}</td>
<td class="center">{{ $p->kategori }}</td>
<td class="center">
<a class="label label-info" href="#">Masuk</a>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div><!--/span-->
</div><!--/row-->
解决方案
您只允许nopol
批量分配:
// in your Parking model
protected $fillable = ['nopol'];
// this won't work
$park = Parking::create([
'jenis' => $request->input('jenis'),
'kategori' => $request->input('kategori'),
'nopol' => $request->input('nopol'),
]);
// change your parking model fillable to this
protected $fillable = ['jenis', 'kategori', 'nopol'];
或者,$guarded
在模型上设置属性Parking
:
// allow all fields except id
protected $guarded = ['id'];
或允许一切:
protected $fillable = ['*'];
最后,使用$request
对您有利的方法:
$park = Parking::create($request->only(['jenis',kategori','nopol']));
推荐阅读
- android - 如何在 webView 中使用私有 url?
- ios - 使用 UNLocationNotificationTrigger
- mysql - Mariadb 服务器启动失败(code=killed)
- xcode - Xcodebuild:找不到与提供的目标说明符匹配的目标
- c++ - C++ 内核的 Jupyter 笔记本错误 [cling]
- powershell - 为什么 powershell 正则表达式不能与 \n 一起使用?
- android - 如何将类实例作为参数提供给 Kotlin 函数
- c++ - 您如何编码将不同的可执行文件合并到一个窗口框架中?像浏览器一样?
- python - 熊猫将数据框与条件合并
- html - 如何使用 react-native-render-html 从包含电话号码或电子邮件的 html 内容中单击打开电话应用程序或电子邮件?