Parece que mi save(); en mis categorías no funciona según lo previsto a continuación. Primero mostraré los códigos necesarios:
el nombre de mi tabla es hms_bbr_category que también está conectado a mi .env localmente:
DB_CONNECTION=pgsql DB_HOST=localhost DB_PORT=5432 DB_DATABASE=jhs DB_USERNAME=postgres DB_PASSWORD=pa55wor0mi modelo: HmsBbrCategoría
clase HmsBbrCategoría extiende Modelo
{ protected $table = 'hms_bbr_category'; protected $fillable = [ "category_name", "category_description" ]; }mi controlador: 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!', ]); } }Los campos ajax y modal.
<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>mis rutas en web.php
Route::get('/bbr-category-configuration', [BBRCategoryConfigurationController::class,'index']); Route::post('/bbr-category-configuration', [BBRCategoryConfigurationController::class,'store']);Cosas a tener en cuenta:
mi corazonada es que mi función de tienda no se conecta correctamente en $category = new HmsBbrCategory; Sin embargo, he comprobado que el nombre de mi tabla y los campos tomados son los mismos, como se ve en $category->category_name = $request->input('category_name');
También probé en ajax con los valores simplemente agregando console.log(response) como se ve en la captura de pantalla, no puedo pasar mi validador para llegar a save() . No estoy seguro de cómo, pero no debería haber un error ya que mis campos de texto están llenos.
Puedo elaborar más si es necesario, estoy preguntando qué puedo cambiar para arreglar mi validación/guardado. Gracias por cualquier ayuda.
Como muestra el error, la validación está fallando (supongo que el valor está vacío) y está devolviendo el código que programó (400).
Supongo que es porque está usando una cadena en lugar de la variable en los data: "category_data",
actualice el código para enviar la variable en su lugar
$.ajax({ type: "POST", url: "/clinical/bbr-category-configuration", data: category_data, //change here dataType: "json", success: function (response){ //...