Le traitement de formulaires avec cases à cocher est particulier.
Voici les figures de cas possibles :
Si vous ne prenez pas de précautions particulières et que le champ ne peut pas recevoir la valeur null dans la table, une case non cochée générera un message d'erreur du genre « SQLSTATE[HY000]: General error: 1364 Field 'actif' doesn't have a default value ».
Pour bien gérer cette technicalité, il est possible de donner la valeur true au champ lorsque la case à cocher fait partie de $request. Sinon, le champ aura la valeur false.
public function store(Request $request) : RedirectResponse
{
try {
$produit = new Produit($request->all());
$produit->actif = $request->actif ? true : false;
$produit->save();
catch (\Throwable $e) {
\Log::error('Erreur inattendue : ', [$e]);
... // il faudra avertir l'usager
}
}
Dans cet extrait de code, $request->actif sera à true si les deux conditions suivantes sont remplies : il doit exister et il doit avoir une valeur différente de 0. Donc, si le champ ne fait pas partie de $request, $produit->actif prendra la valeur false.
▼Publicité