Création des routes¶
Nous allons créer deux routes, une route pour le formulaire et une autre route pour l'action du formulaire.
Route::get('/posts/create', [PostController::class, 'create'])->name('posts.create');
Route::post('/posts/store', [PostController::class, 'store'])->name('posts.store');
Création du formulaire¶
@extends ('layouts.app')
@section ('content')
<!-- formulaire de création d'un post -->
<form action="{{ route('posts.store') }}" method="POST">
@csrf
<div class="form-group">
<label for="title">Titre</label>
<input type="text" class="form-control" name="title" id="title" placeholder="Titre">
</div>
<div class="form-group">
<label for="content">Contenu</label>
<textarea class="form-control" name="content" id="content" rows="3"></textarea>
</div>
<button type="submit" class="btn btn-primary">Créer</button>
</form>
@endsection
Ne pas oubliez le @csrf sinon le formulaire ne fonctionnera pas. {.is-warning}
Création de la méthode de création¶
public function create()
{
$title = 'Créer un post';
return view('form', compact('title'));
}
Création de la méthode de stockage¶
public function store(Request $request)
{
// Création du post et stockage en base de données
Post::create([
'title' => $request->title,
'content' => $request->content
]);
// Redirection vers la page du post créé
return redirect()->route('posts.show', Post::latest()->first()->id);
}
Autorisation d'écriture des données¶
Les variables doivent être autorisé dans le modèle.
class Post extends Model
{
use HasFactory;
protected $fillable = ['title', 'content'];
}
Méthode non recommandée pour écrire dans la BDD¶
public function store(Request $request)
{
// Création du post et stockage en base de données
$post = new Post();
$post->title = $request->input('title');
$post->content = $request->input('content');
$post->save();
// Redirection vers la page du post créé
return redirect()->route('posts.show', Post::latest()->first()->id);
}
Cette méthode n'est pas recommandée, car elle ne nécessite pas d'autorisé les variables à envoyer dans la BDD. {.is-danger}