Skip to content
Snippets Groups Projects
Commit 1ec3b64c authored by Chloé JACOB's avatar Chloé JACOB :alien:
Browse files

relation 1 à N nationality

parent e7b44419
Branches
No related merge requests found
......@@ -2,6 +2,7 @@
namespace App\Http\Controllers;
use App\Http\Requests\PieceRequest;
use App\Models\Piece;
use Illuminate\Http\Request;
......@@ -24,7 +25,7 @@ public function index()
*/
public function create()
{
//
return view('piece.create');
}
/**
......@@ -33,15 +34,12 @@ public function create()
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
public function store(PieceRequest $request)
{
$data = $request->validate([
'name' => 'nullable',
'description' => 'nullable',
'prix' => 'nullable',
]);
$data = $request->validated();
$piece = new Piece();
$piece->fill($data);
$piece->nationality()->associate($data['nationality']);
$piece->save();
return redirect()->route('piece.show', $piece);
}
......@@ -54,7 +52,7 @@ public function store(Request $request)
*/
public function show(Piece $piece)
{
//
return view('piece.show', ['piece' => $piece]);
}
/**
......@@ -65,7 +63,7 @@ public function show(Piece $piece)
*/
public function edit(Piece $piece)
{
//
return view('piece.edit', ['piece' => $piece]);
}
/**
......@@ -75,9 +73,13 @@ public function edit(Piece $piece)
* @param \App\Models\Piece $piece
* @return \Illuminate\Http\Response
*/
public function update(Request $request, Piece $piece)
public function update(PieceRequest $request, Piece $piece)
{
//
$data = $request->validated();
$piece->fill($data);
$piece->nationality()->associate($data['nationality']);
$piece->save();
return redirect()->route('piece.show', ['piece' => $piece]);
}
/**
......@@ -88,6 +90,7 @@ public function update(Request $request, Piece $piece)
*/
public function destroy(Piece $piece)
{
//
$piece->delete();
return redirect()->route('piece.index');
}
}
......@@ -26,7 +26,8 @@ public function rules()
return [
'name' => 'nullable',
'description' => 'nullable',
'prix' => 'nullable',
'prix' => 'nullable|regex:#^[0-9]{1,5}(\.[0-9]{1,2})?$#',
'nationality' => 'nullable|integer|exists:nationalities,id',
];
}
}
<?php
namespace App\View\Components\Nationality;
use App\Models\Nationality;
use Illuminate\View\Component;
class Selector extends Component
{
/**
* Create a new component instance.
*
* @return void
*/
public function __construct()
{
//
}
/**
* Get the view / contents that represent the component.
*
* @return \Illuminate\Contracts\View\View|\Closure|string
*/
public function render()
{
$nationalities = Nationality::all();
return view('components.nationality.selector', ['nationalities' => $nationalities]);
}
}
<select name="{{ $attributes->get('name') }}" @if ($attributes->has('required')) required @endif>
<option value=""></option>
@foreach ($nationalities as $nationality)
<option value="{{ $nationality->id }}" @if ($attributes->get('selected') == $nationality->id) selected @endif>
{{ $nationality->name }}</option>
@endforeach
</select>
......@@ -2,12 +2,12 @@
<h1 class="text-2xl font-bold text-center">LISTE DE TOUTES LES PIECES :</h1>
<div class="flex justify-around">
@foreach ($pieces as $piece)
<div class="border-2 border-red-900 flex flex-col">
<div class="border-2 border-red-900 flex flex-col p-2">
<h3 class="text-center">{{ $piece->name }}</h3>
<p><b>Description : </b>{{ $piece->description }}</p>
<p><b>Prix : </b>{{ $piece->prix }} €</p>
<p><b>Nationalité : </b>{{ $piece->nationality->name ?? '' }}</p> <!--pcq toutes les nationalités dont pas rempli, sinon mettre un if-->
<button><a href="#">EN SAVOIR PLUS</a></button>
<button class="border-2 border-green-500"><a href="{{ route('piece.show', ['piece' => $piece]) }}">EN SAVOIR PLUS</a></button>
</div>
@endforeach
</div>
......
<x-app-layout>
@if ($errors->any())
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
@endif
<form action="{{ route('movie.store') }}" method="POST">
@csrf
<p><input type="text" placeholder="Title" name="title" value="{{ old('title') }}" required></p>
<p>
<textarea name="synopsis" placeholder="Synopsis" rows="5">{{ old('synopsis') }}</textarea>
</p>
<p><input type="date" name="release_date" placeholder="Release date" value="{{ old('release_date') }}"
required></p>
<p>
<x-form.director.selector name="director" required :selected="old('director')" />
</p>
<x-form.actor.many-selector name="actor" :selected="old('actor', [])" type="select" />
<p><button type="submit">Create</button></p>
</form>
</x-app-layout>
<x-app-layout>
@if ($errors->any())
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
@endif
<form class="flex flex-col" action="{{ route('piece.store') }}" method="POST">
@csrf
<input type="text" placeholder="Nom de la pièce" name="name" value="{{ old('name') }}" required>
<textarea name="description" placeholder="Description" rows="5">{{ old('description') }}</textarea>
<input type="number" name="prix" placeholder="Prix (000.00€)" value="{{ old('prix') }} €">
<x-nationality.selector></x-nationality.selector>
<button class="border-2 border-green-500" type="submit">Create</button>
</form>
</x-app-layout>
<x-app-layout>
@if ($errors->any())
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
@endif
<div class="flex justify-center">
<div class="w-2/5">
<h2>MODIFIER UNE PIECE</h2>
<form class="flex flex-col" action="{{ route('piece.update', ['piece' => $piece]) }}" method="POST">
@csrf
@method('PUT')
<input type="text" placeholder="Nom de la pièce" name="name" value="{{ old('name', $piece->name) }}" required>
<textarea name="description" placeholder="Description" rows="5">{{ old('description', $piece->description) }}</textarea>
<x-nationality.selector name="nationality" selected="{{ old('nationality', $piece->nationality_id) }}"></x-nationality.selector> <!--le premier paramètre correspond au nom du champ name="", le deuxième à la bdd-->
<input type="number" min="0" step="0.01"name="prix" value="{{ old('prix', $piece->prix) }}"
required>
<button class="border-2 border-green-500" type="submit">Edit</button></p>
</form>
</div>
</div>
</x-app-layout>
<x-app-layout>
<div class="border-2 border-red-900 flex flex-col">
<h3 class="text-center">{{ $piece->name }}</h3>
<p><b>Description : </b>{{ $piece->description }}</p>
<p><b>Prix : </b>{{ $piece->prix }} €</p>
<p><b>Nationalité : </b>{{ $piece->nationality_id->name }} €</p>
<button><a href="{{ route('piece.edit', ['piece' => $piece]) }}">Créer une autre pièce</a></button>
<div class="flex justify-center">
<div class="w-2/5">
<div class="border-2 border-red-900 flex flex-col">
<h2 class="text-center">{{ $piece->name }}</h2>
<p><b>Description : </b>{{ $piece->description }}</p>
<p><b>Prix : </b>{{ $piece->prix }} €</p>
<p><b>Nationalité : </b>{{ $piece->nationality->name ?? ''}}</p>
</div>
<button class="border-2 border-green-500"><a href="{{ route('piece.edit', ['piece' => $piece]) }}">MODIFIER</a></button>
<button class="border-2 border-green-500"><a href="{{ route('piece.destroy', ['piece' => $piece]) }}">SUPPRIMER</a></button>
</div>
</div>
<button><a href="#">MODIFIER</a></button>
<button><a href="#">SUPPRIMER</a></button>
</x-app-layout>
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