Commit 81887d95 by Angello Torres

Video 38

parent 79e5234b
......@@ -3,12 +3,13 @@
namespace App\Http\Controllers;
use App\User;
use Illuminate\Contracts\View\View;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Validation\Rule;
class UserController extends Controller
{
// Muestra el listado de todos los usuarios
public function index()
{
// Con listado dinámino, tomando datos desde la DB
......@@ -42,11 +43,12 @@ class UserController extends Controller
return view('users.index', compact('title', 'users'));
}
/*
// Otra forma de para la función show
public function show($id)
{
$user = User::find($id);
Condicional para evitar que el usuario busque un registro inexixtente
Condicional para evitar que el usuario busque un registro inexistente
if ($user == null){
return view('errors.404');
}
......@@ -54,15 +56,18 @@ class UserController extends Controller
}
*/
// Muestra el detalle del usuario seleccionado
public function show(User $user){
return view('users.show', compact('user'));
}
// Hace el llamado a la función store para añadir un nuevo usuario
public function create()
{
return view('users.create');
}
// Añade un nuevo usuarios a la DB
public function store(){
// recibe los campos del formulario y crea un usuario nuevo
......@@ -93,31 +98,51 @@ class UserController extends Controller
]);
return redirect()->route('users.index');
// return 'Procesando información ...';
}
// Hace llamado a la vista con el formulario para actualizar el usuario
public function edit(User $user)
{
return view('users.edit', ['user' => $user]);
}
// Actualiza los usuarios
public function update(User $user){
$data = request()->validate([
'name' => 'required',
// 'email' => 'required|email|unique:users,email', // Con | puedes tener más de una regla, o pasando un array ['required', 'email', '...']
'password' => ['required','min:6'],
// Al actualizar se deja conservar el email del usuario
// 'email' => 'required|email|unique:users,email,'.$user->id,
// Con la nueva sintaxis de laravel Rule
'email' => ['required', 'email', Rule::unique('users')->ignore($user->id)],
'password' => '', // El password no tiene que ser requerido
], [
'name.required' => 'El campo "Nombre del usuario" es requerido',
'email.required' => 'El campo "Email" es requerido',
'email.unique' => 'Otro usuario stá usando el email, este debe ser único',
'password.required' => 'El campo "Tu password" es requerido',
'password.min' => 'El campo "Tu password" debe tener al menos 6 caracteres',
// 'password.required' => 'El campo "Tu password" es requerido',
// 'password.min' => 'El campo "Tu password" debe tener al menos 6 caracteres',
]);
$data['password'] = bcrypt($data['password']);
/*
Condicional que se encarga de mira el password, para que el usuario que esté actualizando datos no este obligado a cambiar su password
*/
if ($data['password'] != null) {
$data['password'] = bcrypt($data['password']);
} else {
unset($data['password']); // Quita el indice password del array asociativo
}
$user->update($data);
return redirect()->route('user.show', ['User' => $user]);
return redirect()->route('users.show', ['user' => $user]);
}
// Método para la eliminación de un usuario
public function destroy(User $user){
$user->delete();
return redirect()->route('users.index');
}
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<p>Crear nuevo usuario</p>
</body>
</html>
......@@ -42,15 +42,16 @@
</button>
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav mr-auto">
<li class="nav-item active">
<a class="nav-link" href="{{ route('users.index') }}">Usuarios Registrados<span class="sr-only">(current)</span></a>
<!--
</li>
<li class="nav-item active">
<a class="nav-link" href="{{ route('users.store') }}">Nuevo Usuario<span class="sr-only">(current)</span></a>
</li>
</ul>
-->
<li class="nav-item active">
<a class="nav-link" href="{{ route('users.create') }}">Nuevo Usuario<span class="sr-only">(current)</span></a>
</li>
</ul>
</div>
</nav>
......
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Show</title>
</head>
<body>
<p>Mostrado detalle del usuario: {{ $id }}</p>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1><?= e($title) ?></h1>
<hr>
@if (! empty($users))
<ul>
@foreach ($users as $user)
<li>{{ $user }}</li>
@endforeach
</ul>
@else
<p>No hay usuarios registrados</p>
@endif
</body>
</html>
......@@ -20,7 +20,7 @@
@endif
--}}
<form action="{{route('users.store')}}" method="post">
<form action="{{ url('usuarios') }}" method="post">
{{--
Add _token (es un input type="hidden" que envia info que solo nuestro serve sabe) para evitar ataques de tipo CSRF
<input type="hidden" name="_token" value="F3hukPNtUeW02l3URoLgyM1pd4uQPWazQrSaXQ8h">
......
......@@ -24,7 +24,6 @@
con rutas (name), estas estan definidas en routes/web.php
-->
<a href="{{ route('users.show', ['id' => $user->id]) }}">Ver detalle</a>
<a href="{{ route('users.edit', ['id' => $user->id]) }}">Actualizar usuario</a>
</li>
@empty
<p>No hay usuarios registrados</p>
......
......@@ -20,6 +20,14 @@
@index = Apunta a la function index()
-->
</p>
<p>
<a href="{{ route('users.edit', $user) }}">Editar usuario</a> {{-- Se pasa solo el modelo de eloquent --}}
</p>
<form action="{{ route('users.destroy', $user) }}" method="post">
{{ csrf_field() }}
{{ method_field('DELETE') }}
<button class="btn btn-primary" type="submit">Eliminar usuario</button>
</form>
@endsection
......@@ -37,6 +37,9 @@ Route::get('/usuarios/{user}/editar', 'UserController@edit')->name('users.edit')
Route::post('/usuarios', 'UserController@store')->name('users.store');
// Ruta para la actualzación en DB de los datos
Route::put('/usuarios/{user}', 'UserController@update');
Route::put('/usuarios/{user}', 'UserController@update')
->name('users.update');
Route::delete('usuarios/{user}', 'UserController@destroy')->name('users.destroy');
Route::get('/saludo/{name}/{nickname?}', 'welcomeUserController');
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment