Laravel demande des formulaires parent/enfant imbriqués
P粉446800329
2023-08-08 18:04:08
<p>J'utilise Laravel pour créer une API. J'ai créé les classes ProductRequest et ProductPriceRequest pour la validation des demandes et elles fonctionnent comme prévu. </p><p>Un produit peut avoir plusieurs prix de produit. </p><p>Maintenant, pour créer un ProductPrice, je dois d'abord créer un produit, puis créer un ProductPrice associé à ce produit</p><p><br />< /p> ;
<pre class="brush:php;toolbar:false;">//Créer un produit
POST->http://127.0.0.1:8000/api/v1/products
{
"nom": "produit1"
}
//Créer le prix du produit associé au produit
Post->http://127.0.0.1:8000/api/v1/products/69081258758830188/productprices
{
"nom": "prixproduit1"
}</pré>
<p>Mais je souhaite activer la création de ProductPrice lors de la création d'un produit</p>
<pre class="brush:php;toolbar:false;">//Créer un produit+prix du produit
POST->http://127.0.0.1:8000/api/v1/products
{
"nom": "prod2",
"Prixproduit": [
{
"nom": "pp1"
},
{
"nom": "pp2"
}
]
}</pré>
<p>Puisque j'ai déjà (et j'ai besoin) d'un ProductPriceRequest, comment puis-je utiliser la classe ProductPriceRequest dans ProductRequest pour valider le ProductPrice s'il y a un ProductPrice dans la demande. </p><p>Je suis nouveau sur Laravel (j'utilise la version 10) et php et je n'ai trouvé aucun exemple sur cette situation</p><p><br />< ;/p>
Personnellement, dans une autre classe ProductPriceRequest, je n'essaierais pas de réutiliser les mêmes règles pour ProductRequest, je ferais juste quelque chose de similaire
;Ou quelles que soient vos règles.
Techniquement, si vous voulez vraiment utiliser les mêmes règles, vous pouvez mettre ces règles en double dans le modèle ProductPrice puis les utiliser dans les deux fichiers FormRequest, mais je ne sais pas s'il y aura d'autres conflits, car ici, le les données se présentent sous la forme d'un tableau, tandis que dans l'autre cas (vous n'avez pas montré où vous utilisez et avez besoin de ProductPriceRequest), une autre structure pour la validation peut être transmise