public function show(Product $product) {
return view("product.view", compact("product"));
}
{{$product->name}}
{{$product->description}}
Tendremos accesible desde http://localhost/product/
public function edit(Product $product) {
return view("product.edit", compact("product");
}
Creamos una vista ''edit.blade.php'':
http://localhost/product/4/edit
Vamos a hacer el ''update()'':
public function update(UpdateProductRequest $request, Product $product) {
$product->update($request->all());
return redirect(route("product.index"));
}
Ahora vamos a hacer ''destroy()'':
public function destroy(Product $product) {
$product->delete();
return \redirect(route("product.index")); // ¿por qué la barra invertida?
}
Route::resource("/product", ProductController::class)->except("destroy");
// Este apaño es para no usar la ruta que propone Laravel para borrar
// y borrar mediante una ruta que definamos nosotros
Route::get("/product/{product}/destroy", [ProductController::class, "destroy"])->name("product.destroy");
Listado de productos
@foreach($productsList as $product)
-
Nombre: {{$product->name}}
@endforeach
Vamos a realizar la **separación por capas** (Aplicación, Dominio e Infraestructura).
Toda la responsabilidad sobre comunicarse con la base de datos, debería estar en un repositorio (patrón repository).
''app/Http'' es infraestructura. Vamos a crear un directorio ''app/Domain'':
* ''Contracts\IProductRepository.php''
namespace App\Domain\Contracts;
interface IProductRepository {
public function getAllProducts();
}
El repositorio lo creamos en ''app/Infraestructure/'' y creamos la carpeta ''Repositories'' donde crearemos el fichero ''EloquentProductRepository.php'':
namespace App\Infraestructure\Repositories;
use App\Domain\Contracts\IProductRepository;
use App\Models\Product;
class EloquentProductRepository immplements IProductRepository {
public function getAllProducts() {
Product::all();
}
}
Laravel es bueno para proyectos grandes, el problema es cuando es necesario salirse de lo que Laravel ofrece. Para proyectos grandes, el profe recomienda Symfony, es mucho más flexible.
El profe cuando empezó el Lifull se metió para gestionar un portal inmobiliario para el sudeste asiático gestionado con Laravel.
El resto de la clase se dedicó a que la gente hablase de lo que le parece el curso y lo que espera de él en el futuro. En general quieren saber más de Laravel y menos de testing.