Laravel Controller/Ajax 没有保存在我的数据库中
Laravel Controller/Ajax not saving in my database
我的 save();
在我的类别中似乎没有按照下面的预期运行。我会先展示必要的代码:
我的 table 名字是 hms_bbr_category
这也是本地连接到我的 .env 的:
DB_CONNECTION=pgsql
DB_HOST=localhost
DB_PORT=5432
DB_DATABASE=jhs
DB_USERNAME=postgres
DB_PASSWORD=pa55wor0
我的模型:HmsBbrCategory
class HmsBbrCategory 扩展模型
{
protected $table = 'hms_bbr_category';
protected $fillable = [
"category_name", "category_description"
];
}
我的控制器:BBRCategoryConfigurationController
class BBRCategoryConfigurationController extends Controller
{
public function index(){
return view('frontend.bbr-settings.bbr-category-configuration');
}
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'category_name'=>'required|max:191',
'category_description'=>'required|max:191',
]);
if($validator->fails())
{
return response()->json([
'status'=>400,
'errors'=>$validator->messages(),
]);
}
else {
$category = new HmsBbrCategory;
$category->category_name = $request->input('category_name');
$category->category_description = $request->input('category_description');
$category->save();
return response()->json([
'status'=>200,
'message'=>'Category Added!',
]);
}
}
ajax 和模态字段
<div class="form-group">
<input type="text" class="form-control form-group w-100 category_name" placeholder="Category Name">
</div>
<div class="form-group">
<textarea class="form-control w-100 category_description" placeholder="Category Description" cols="50" rows="10"></textarea>
</div>
<script>
$(document).ready(function (){
$(document).on('click', '.add_category', function(e){
e.preventDefault();
var category_data = {
'category_name': $('.category_name').val(),
'category_description': $('.category_description').val(),
}
//token taken from laravel documentation
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
console.log(category_data);
$.ajax({
type: "POST",
url: "/clinical/bbr-category-configuration",
data: "category_data",
dataType: "json",
success: function (response){
// console.log(response);
if(response.status == 400)
{
$('#saveform_errList').html("");
$('#saveform_errList').addClass('alert alert-danger');
$.each(response.errors, function (key, err_values) {
$('#saveform_errList').append('<li>'+err_values+'</li>');
});
}
else
{
$('#saveform_errList').html("");
$('#success_message').addClass('alert alert-success');
$('#success_message').text(response.message);
$.('#createCategory').modal('hide');
$.('#createCategory').find('input').val("");
console.log(category_data);
}
}
});
});
});
</script>
我在 web.php
的路线
Route::get('/bbr-category-configuration', [BBRCategoryConfigurationController::class,'index']);
Route::post('/bbr-category-configuration', [BBRCategoryConfigurationController::class,'store']);
注意事项:
我的直觉是我的商店功能在 $category = new HmsBbrCategory;
处没有正确连接但是我已经检查过我的 table 名称和所采用的字段是相同的,如 $category->category_name = $request->input('category_name');
处所示
我还通过简单地添加 console.log(response)
在 ajax 中测试了值,如屏幕截图所示,我无法通过我的验证器到达 save()
。我不确定怎么做,但应该不会出错,因为我的文本字段已填满。
如果需要,我可以详细说明,我想知道我可以更改什么来修复我的 validation/save。感谢您的帮助。
如错误所示,验证失败(我猜是空值)并返回您编写的代码 (400)。
我猜这是因为您在属性 data: "category_data",
中使用的是字符串而不是变量
更新代码以改为发送变量
$.ajax({
type: "POST",
url: "/clinical/bbr-category-configuration",
data: category_data, //change here
dataType: "json",
success: function (response){
//...
我的 save();
在我的类别中似乎没有按照下面的预期运行。我会先展示必要的代码:
我的 table 名字是 hms_bbr_category
这也是本地连接到我的 .env 的:
DB_CONNECTION=pgsql
DB_HOST=localhost
DB_PORT=5432
DB_DATABASE=jhs
DB_USERNAME=postgres
DB_PASSWORD=pa55wor0
我的模型:HmsBbrCategory
class HmsBbrCategory 扩展模型
{
protected $table = 'hms_bbr_category';
protected $fillable = [
"category_name", "category_description"
];
}
我的控制器:BBRCategoryConfigurationController
class BBRCategoryConfigurationController extends Controller
{
public function index(){
return view('frontend.bbr-settings.bbr-category-configuration');
}
public function store(Request $request)
{
$validator = Validator::make($request->all(), [
'category_name'=>'required|max:191',
'category_description'=>'required|max:191',
]);
if($validator->fails())
{
return response()->json([
'status'=>400,
'errors'=>$validator->messages(),
]);
}
else {
$category = new HmsBbrCategory;
$category->category_name = $request->input('category_name');
$category->category_description = $request->input('category_description');
$category->save();
return response()->json([
'status'=>200,
'message'=>'Category Added!',
]);
}
}
ajax 和模态字段
<div class="form-group">
<input type="text" class="form-control form-group w-100 category_name" placeholder="Category Name">
</div>
<div class="form-group">
<textarea class="form-control w-100 category_description" placeholder="Category Description" cols="50" rows="10"></textarea>
</div>
<script>
$(document).ready(function (){
$(document).on('click', '.add_category', function(e){
e.preventDefault();
var category_data = {
'category_name': $('.category_name').val(),
'category_description': $('.category_description').val(),
}
//token taken from laravel documentation
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
console.log(category_data);
$.ajax({
type: "POST",
url: "/clinical/bbr-category-configuration",
data: "category_data",
dataType: "json",
success: function (response){
// console.log(response);
if(response.status == 400)
{
$('#saveform_errList').html("");
$('#saveform_errList').addClass('alert alert-danger');
$.each(response.errors, function (key, err_values) {
$('#saveform_errList').append('<li>'+err_values+'</li>');
});
}
else
{
$('#saveform_errList').html("");
$('#success_message').addClass('alert alert-success');
$('#success_message').text(response.message);
$.('#createCategory').modal('hide');
$.('#createCategory').find('input').val("");
console.log(category_data);
}
}
});
});
});
</script>
我在 web.php
的路线Route::get('/bbr-category-configuration', [BBRCategoryConfigurationController::class,'index']);
Route::post('/bbr-category-configuration', [BBRCategoryConfigurationController::class,'store']);
注意事项:
我的直觉是我的商店功能在 $category = new HmsBbrCategory;
处没有正确连接但是我已经检查过我的 table 名称和所采用的字段是相同的,如 $category->category_name = $request->input('category_name');
处所示
我还通过简单地添加 console.log(response)
在 ajax 中测试了值,如屏幕截图所示,我无法通过我的验证器到达 save()
。我不确定怎么做,但应该不会出错,因为我的文本字段已填满。
如果需要,我可以详细说明,我想知道我可以更改什么来修复我的 validation/save。感谢您的帮助。
如错误所示,验证失败(我猜是空值)并返回您编写的代码 (400)。
我猜这是因为您在属性 data: "category_data",
更新代码以改为发送变量
$.ajax({
type: "POST",
url: "/clinical/bbr-category-configuration",
data: category_data, //change here
dataType: "json",
success: function (response){
//...