Laravel - Error al actualizar datos de un registro

 
Vista:
Imágen de perfil de Yuri
Val: 3
Ha aumentado 1 puesto en Laravel (en relación al último mes)
Gráfica de Laravel

Error al actualizar datos de un registro

Publicado por Yuri (3 intervenciones) el 09/04/2019 19:22:48
Buenas tardes, tengo un formulario principal llamado index, en donde listo los proyectos creados, para almacenar un nuevo registro invocamos a un formulario modal desde donde grabamos la informacion del nuevo proyecto pero lo que quiero es editar los datos de un registro desde un formulario modal, ya logre recuperar la informacion del registro y cargarlos en los campos de texto, pero no logro editar esa informacion y que se recargue la pagina index mostrando la lista de proyectos con el registro editado.

imagen1
imgen2
imagen3

como podran ver en la imagen 3 ya logramos cargar los datos pero no entiendo como debo de estructurar la ruta para editar el registro
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Error al actualizar datos de un registro

Publicado por Kris Develop (4 intervenciones) el 09/04/2019 22:31:59
Hola, buen dia para enviarlo crea una nueva ruta que direccione al metodo update de tu controlador
ejemplo:

Route::post('update', 'TuControlador'@tumetodo');
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Marco Antonio
Val: 16
Ha mantenido su posición en Laravel (en relación al último mes)
Gráfica de Laravel

Error al actualizar datos de un registro

Publicado por Marco Antonio (8 intervenciones) el 13/04/2019 20:17:14
Que tal Amigo,

Mira una solución podría ser la siguiente:

1.- Crear una ruta para la accion actualizar ejemplo:
Route::match(['get', 'post'], 'categories/edit/{id}', 'CategoriesController@edit')
->name('categories.edit');
Como vez la estoy mapeando a los metodos get y post

2.- En el controlador,
Cuando el usuario haga click en el boton editar, lanzas la petición por GET y traes el formulario con información.
Cuando creas el formulario, debes especificarle que se enviara por POST.
Esto lo haces agregando a la etiqueta <form method="POST">
De tal manera que cuando el usuario haga click en el boton de guardar, el formulario se enviara a la misma ruta pero ahora con el metodo POST lo que indica que ahora en lugar de traer lo que necesitas es que guarde la info, si las validaciones fallan se regresara en json.


3..- En el controlador quedaría mas o menos así

public function create(Request $request)
{
$response = [];
if ($request->ajax())
{
if ($request->isMethod('get'))
{
$model = new Category;
$model->active = 1;

$data = [];
$data['model'] = $model;
$response['html'] = view( 'categories.create',$data)->render();
$response['window_title'] = __('New Category');
}
else
{
//Validations
$data = $request->all();
$validator = Validator::make($data,[]);
$validator->validate();

//create
$response = Category::create($data);
}
return response()->json($response);
}


Tengo entendido que desde javascript ya tienes como enviar por post el form.

Espero que te sirva,

Estare al pendiente de tus comentarios

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Marco Antonio
Val: 16
Ha mantenido su posición en Laravel (en relación al último mes)
Gráfica de Laravel

Error al actualizar datos de un registro

Publicado por Marco Antonio (8 intervenciones) el 13/04/2019 20:41:28
Corrijo el metodo.

Este es el update

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
public function edit(Request $request, $id)
{
    $response = [];
 
	//Siempre vas por el registro, si es GET o POST no importa, te ayuda a validar de que la sesion esta activa 
	//Usa el metodo findOrFail en caso de que el registro no exista automaticamente te generara una excepcion con error htto 400 not found
		//, desde Ajax puedes capturar el codigo y enviar un alerta
	$model = Category::findOrFail($id);
 
	//Con esta condición enviamos el registro previamente consultado a la vista blade para que llene el formulario como lo hace laravel
	if($request->isMethod('get'))
	{
		//Creamos este array que usaremos para pasarle datos a la vista
		$data = [];
		$data['model'] = $model;
 
		//Aqui ejecutamos la vista y obtenemos el HTML Generado en nuestro caso el puro formulario y lo guardamos  en un parametro JSON
		$response['html']  = view('categories.edit',$data)->render();
   }
   else
   {
		//En este array agregas tus validaciones
		$validationRules = [];
		$data = $request->all();
		$validator = Validator::make($data,$validationRules);
 
		//Las ejecutas y si un error ocurre laravel te lanza la excepcion con un array de los errores.
		$validator->validate();
 
		$model->fill($data);
		model->save();
 
		$response['message'] = "registro actualizado exitosamente.";
   }
 
	//Siempre regresamos el array con información ya que si es GET regresara el form, si es POST regresara la confirmación
    return response()->json($response);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar