ccc

Formularios utizando modelos

En la consola crear un modelo:
php artisan make:model Pelicula -m

En database/migrations se ha creado el fichero crear_peliculas_table_xxx.php que modif:

public function up()
    {
        Schema::create('peliculas', function(Blueprint $table)
        {
            $table->increments('id');
            $table->string('titulo');
            $table->string('anno');
            $table->string('director');
            $table->timestamps();
        });
    }

En consola ejecutamos para crear esa tabla en la BD:
php artisan migrate

En App te ha creado el modelo Pelicula.php que modificamos:
protected $table = 'peliculas';
protected $fillable = ['titulo', 'anno', 'director'];
protected $guarded = ['id'];

En Routes/web.php creamos las rutas:
Route::get('pelicula/add_pelicula','PeliculaController@add_pelicula');
Route::get('pelicula/list_peliculas','PeliculaController@list_peliculas');
Route::resource('pelicula/guardar','PeliculaController@guardar');

Creamos desde consola el controlador:
php artisan make:controller PeliculaController

En App/Http/Controllers/PeliculaController modificamos:
use Illuminate\Http\Request;
use App\Pelicula as Pelicula;

class PeliculaController extends Controller
{
    public function index(){
        $peliculas = Pelicula::all();
        return \View::make('list_peliculas',compact('peliculas'));
    }

    public function add_pelicula() {
        // return \View::make('add_pelicula');
        return view('add_pelicula');
    }

    public function list_peliculas() {
        $peliculas = Pelicula::all();
        return \View::make('list_peliculas',compact('peliculas'));
    }

    public function guardar(Request $request)  {
        $pelicula = new Pelicula;
        $pelicula->create($request->all());
        return redirect('pelicula/list_peliculas');
    }
}

Creamos la vista standard de app.blade.php por si no está ya creada de antes:
<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>

Creamos la vista de add_pelicula.blade.php:
@extends('app')
@section('content')
    <div class="container">
        <div class="row">
            <div class="col-md-10 col-md-offset-1">
                <form action="{{url('pelicula/guardar')}}" method="post">
                    {{ csrf_field() }}
                    Título: <input type="text" name="titulo"><br>
                    Año: <input type="text" name="anno"><br>
                    Director:<input type="text" name="director"><br>
                    <input type="submit">
                </form>
            </div>
        </div>
    </div>
@endsection

Creamos la vista de list_peliculas.blade.php:
@extends('app')
@section('content')
    <div class="container">
        <div class="row">
            <a href="{{ url('pelicula/add_pelicula') }}" class="btn btn-primary">Añadir nueva película</a>
            <hr>
            <table class="table table-condensed table-striped table-bordered">
                <thead>
                <tr>
                    <th>Título</th>
                    <th>Año</th>
                    <th>Director</th>
                </tr>
                </thead>
                <tbody>
                @foreach($peliculas as $item)
                    <tr>
                        <td>{{ $item->titulo }}</td>
                        <td>{{ $item->anno }}</td>
                        <td>{{ $item->director }}</td>
                    </tr>
                @endforeach
                </tbody>
            </table>
        </div>
    </div>
@endsection

No hay comentarios:

Publicar un comentario