ccc

Laravel: Crud (2º parte)

use App\Cliente;
class ClienteController extends Controller
{

    public function index()
    {
        //
    }


    public function create()
    {
        $arr = array();
        return \View::make('cliente/create',compact('arr'));
        break;
    }


    public function store(Request $request)
    {
        $item = new Cliente;
        $item->create($request->all());
        return redirect('cliente/show');
    }

    public function show($id)
    {
        $arr = Cliente::all();
        return \View::make('cliente/show',compact('arr'));
        break;
    }


    public function edit($id)
    {
        $item = Cliente::find($id);
        return \View::make('cliente/edit',compact('item'));
    }


    public function update(Request $request, $id)
    {
        $item = Cliente::find($id);
        $item->nombre = $request->nombre;
        $item->apellidos = $request->apellidos;
        $item->save();
        return redirect('cliente/show');
    }

    public function destroy($id)
    {
        $item = Cliente::find($id);
        $item->delete();
        return redirect('cliente/show');
    }

    public function search(Request $request) {
        $arr = Cliente::where('nombre','like','%'.$request->buscando.'%')
            ->orWhere('apellidos','like','%'.$request->buscando.'%')
            ->get();

        return \View::make('cliente/show',compact('arr'));
        break;
    }
}

En Routes/web:
Route::resource('/cliente','ClienteController');
Route::post('/cliente/search', 'ClienteController@search');

Crear en resources/views/app.blade.php: // va a ser la estructura común para el resto de las vistas
<html>
<head>
    @section('head')
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css">
    @show
</head>
<body>
<div class="container">
    @yield('content')
</div>

@section('footer_scripts')
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
@show
</body>
</html>

En resources/views/cliente/show.blade.php:
@extends('app')
@section('content')
    <div class="container">
        <div class="row">


<form method="post" action="{{url('cliente/search')}}">
    {{ csrf_field() }}
    <div class="form-group">
        <input type="text" class="form-control" name="buscando">
    </div>
    <button type="submit" class="btn btn-default">Buscar</button>
</form>

<hr>
<a href="{{ url('cliente/create') }}" class="btn btn-primary">Añadir nuevo</a>
<hr>

<table class="table table-condensed table-striped table-bordered">
    <thead>
    <tr>
        <th>Nombre</th>
        <th>Apellidos</th>
        <th></th>
        <th></th>
    </tr>
    </thead>
    <tbody>
    @foreach($arr as $item)
        <tr>
            <td>{{ $item->nombre }}</td>
            <td>{{ $item->apellidos }}</td>
            <td>
                <!-- <a class="btn btn-primary btn-xs" href="{{ url('cliente/'.$item->id.'/edit')}}" >MODIFICAR</a> -->
                <form method="post" action="{{route('cliente.edit', $item->id)}}">
                    {{ csrf_field() }}
                    <input name="_method" type="hidden" value="GET">
                    <input type="submit" value="MODIFICAR">
                </form>
            </td>
            <td>
                <form method="post" action="{{route('cliente.destroy', $item->id)}}">
                    {{ csrf_field() }}
                    <input name="_method" type="hidden" value="DELETE">
                    <input type="submit" value="BORRAR" onclick="return confirm('¿Estás seguro de querer borrarlo?');">
                </form>
            </td>

        </tr>
    @endforeach
    </tbody>
</table>
            </div>
        </div>

En resources/views/cliente/create.blade.php:
<form action="{{url('cliente')}}" method="post"> <!-- No hay que poner cliente/store -->
    {{ csrf_field() }}
    Nombre: <input type="text" name="nombre"><br>
    Apellidos: <input type="text" name="apellidos"><br>

    <input type="submit">
</form>

En resources/views/cliente/edit.blade.php:
<form action="{{route('cliente.update', $item->id)}}" method="post">
    {{ csrf_field() }}
    <input name="_method" type="hidden" value="PUT">
    Nombre: <input type="text" name="nombre" value="{{$item->nombre}}"><br>
    Apellidos: <input type="text" name="apellidos" value="{{$item->apellidos}}"><br>

    <input type="submit">
</form>

No hay comentarios:

Publicar un comentario