Bonjour,
Dans le formulaire pour ajouter un produit au panier, je souhaite ajouter une contrainte pour qu'un client ayant déja acheté ce produit ne puisse pas le commander à nouveau.
Dans mon formulaire j'ai donc ajouter la contrainte suivante :
```
->add("product", "text", array(
"constraints" => array(
new Constraints\NotBlank(),
new Constraints\Callback(array("methods" => array(
array($this, "checkProduct"),
))),
new Constraints\Callback(array("methods" => array(
array($this, "checkUserProduct"),
))),
),
"label" => "product",
"label_attr" => array(
"for" => "cart_product",
),
))
```
Et j'ai crée la fonction checkUserProduct() :
```
public function checkUserProduct($value, ExecutionContextInterface $context)
{
$OrderProductQuery = OrderProductQuery::create()->toString()
->useProductSaleElementsQuery()
->endUse()
->useOrderQuery()
->endUse()
->useCustomerQuery()
->filterByProductId(117)
->endUse()
->count();
if ($OrderProductQuery <> 0) {
$context->addViolation(Translator::getInstance()->trans("Vous ne pouvez pas ajouter ce produit au panier car vous l'avez déja acheter."));
}
}
```
Pour le moment j'ai réduit ma requete pour essayer de la faire pas à pas car je ne peux plus ajouter le produit au panier mais j'ai aucun message d'erreur qui s'affiche.
Quelqu'un aurait'il une piste ?
Merci