Estoy tratando de actualizar el texto cuando envío una solicitud al controlador de Laravel, pero recibo un error:
500 internal server error Uncaught (in promise) Error: Request failed with status code 500console.log muestra texto y valores que estoy tratando de enviar al controlador:
id:16 text:aacódigo vuejs:
const onEdit=(todo)=>{ // var src = evt.target.innerHTML // this.txt = src axios .put('http://127.0.0.1:8000/api/todo/update', { id:todo.id, text:todo.text }) .then(() => getTodos()); console.log("working", todo.text, todo.id); };Controlador Laravel:
public function updateData(Request $request) { $todo = Todo::find($request->id); $todo->update($request->all()); return response()->json([ 'message' => 'updated' ]); }Ruta:
Route::put('todo/update',[TodoController::class,'updateData']);Modelo:
<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Todo extends Model { use HasFactory; protected $dates = [ 'created_at', 'updated_at', ]; protected $fillable = ['id']; }ACTUALIZAR:
Revisé el registro de laravel y obtuve el error:
Add [id] to fillable property to allow mass assignment on [App\Models\Todo].Luego agregué id en el modelo. ahora veo la respuesta a continuación en el registro de la consola, pero no está actualizando los datos.
Un error 500 es un error genérico del lado del servidor.
En primer lugar, edite su función onEdit para agregar una catch para que pueda consolar el registro del error del servidor.
const onEdit = (todo) => { axios.put('http://127.0.0.1:8000/api/todo/update', { id: todo.id, text: todo.text }).then(response => { console.log(response) getTodos() }).catch(error => { console.log(error) }) };Una vez que sepa cuál es el error del servidor, sabrá qué corregir.
El problema es con Todo Model, donde permitió que el campo de id se pudiera completar. Dado que la identificación es un incremento automático archivado en la base de datos, el campo de texto debe ser rellenable.
protected $fillable = ['id']; así que aquí tiene dos opciones. Una es permitir que la propiedad $fillable se pueda rellenar en el campo de text o proteger la propiedad de identificación para que todas las demás propiedades se puedan rellenar.
Asi que
protected $guarded=['id'];o
protected $fillable=['text'];