Paso 5: agregar controlador y modelo
Paso 5: agregar controlador y modelo
Anteriormente, en el paso 4, el segundo parámetro para el recurso es ProjectController, por lo que necesitamos crear el controlador y necesitamos especificar el modelo de recurso agregando --model
Php artisan make: controller ProjectController --resource --model = Proyecto
Le hará una pregunta si desea crear el modelo porque no existe. Escriba sí y creará el modelo y el controlador. Se ha creado un controlador para el proyecto para nosotros con los siguientes métodos en la carpeta del controlador app / Http / Controllers / ProjectController.php
- índice()
- crear()
- tienda (Solicitud, $ solicitud)
- show (Proyecto, $ proyecto)
- editar (Proyecto, $ proyecto)
- actualización (Solicitud, $ solicitud, Proyecto, $ proyecto)
- destruir (Proyecto, $ proyecto)
Escribí los códigos para los diferentes métodos, solo copie y pegue
<?php
namespace App\Http\Controllers;
use App\Models\Project;
use Illuminate\Http\Request;
class ProjectController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$projects = Project::latest()->paginate(5);
return view('projects.index', compact('projects'))
->with('i', (request()->input('page', 1) - 1) * 5);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('projects.create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$request->validate([
'name' => 'required',
'introduction' => 'required',
'location' => 'required',
'cost' => 'required'
]);
Project::create($request->all());
return redirect()->route('projects.index')
->with('success', 'Project created successfully.');
}
/**
* Display the specified resource.
*
* @param \App\Models\Project $project
* @return \Illuminate\Http\Response
*/
public function show(Project $project)
{
return view('projects.show', compact('project'));
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\Project $project
* @return \Illuminate\Http\Response
*/
public function edit(Project $project)
{
return view('projects.edit', compact('project'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\Project $project
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Project $project)
{
$request->validate([
'name' => 'required',
'introduction' => 'required',
'location' => 'required',
'cost' => 'required'
]);
$project->update($request->all());
return redirect()->route('projects.index')
->with('success', 'Project updated successfully');
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\Project $project
* @return \Illuminate\Http\Response
*/
public function destroy(Project $project)
{
$project->delete();
return redirect()->route('projects.index')
->with('success', 'Project deleted successfully');
}
}
Laravel 8 ha creado una carpeta llamada Modelos, que no está disponible en la versión anterior, por lo que nuestro modelo de proyecto se encuentra en la aplicación / Modelos / Project.php , agregue las siguientes funciones y las rellenables, las rellenables son los campos en la base de datos que un usuario puede llenar.
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Project extends Model
{
use HasFactory;
protected $table = 'projects';
public $timestamps = true;
protected $casts = [
'cost' => 'float'
];
protected $fillable = [
'name',
'introduction',
'created_at',
'location',
'cost'
];
}
aso 5: agregar un controlador y modelo Laravel 8
A continuación, necesitamos crear un controlador y modelo Laravel ejecutando el siguiente comando:
$ php artisan make:controller ProductController --resource --model=Product
Se le preguntará si desea crear el Productmodelo porque no existe. Escriba sí y creará el modelo y el controlador.
Abra el app/Http/Controllers/ProductController.phparchivo y actualícelo de la siguiente manera:
<?php
namespace App\Http\Controllers;
use App\Models\Product;
use Illuminate\Http\Request;
class ProductController extends Controller
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
$products = Product::latest()->paginate(5);
return view('products.index', compact('products'))
->with('i', (request()->input('page', 1) - 1) * 5);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('products.create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$request->validate([
'name' => 'required',
'description' => 'required',
'price' => 'required'
]);
Product::create($request->all());
return redirect()->route('products.index')
->with('success', 'Product created successfully.');
}
/**
* Display the specified resource.
*
* @param \App\Models\Product $product
* @return \Illuminate\Http\Response
*/
public function show(Product $product)
{
return view('products.show', compact('product'));
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\Product $product
* @return \Illuminate\Http\Response
*/
public function edit(Product $product)
{
return view('products.edit', compact('product'));
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\product $product
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Product $product)
{
$request->validate([
'name' => 'required',
'description' => 'required',
'price' => 'required'
]);
$product->update($request->all());
return redirect()->route('products.index')
->with('success', 'Product updated successfully');
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\Product $product
* @return \Illuminate\Http\Response
*/
public function destroy(Product $product)
{
$product->delete();
return redirect()->route('products.index')
->with('success', 'Product deleted successfully');
}
}
Laravel 8 hace uso de una carpeta de modelos para almacenar archivos de modelo.
Abra app/Models/Product.php, agregue las siguientes funciones y los rellenables, los rellenables son los campos en la base de datos que un usuario puede llenar:
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Product extends Model
{
use HasFactory;
protected $table = 'products';
public $timestamps = true;
protected $casts = [
'price' => 'float'
];
protected $fillable = [
'name',
'description',
'price',
'created_at'
];
}
Comentarios
Publicar un comentario