Sylius - return 产品保存验证消息

Sylius - return validation messages on product save

当我在这里使用sylius.factory.producthttps://docs.sylius.com/en/1.6/book/products/products.html

添加产品

/** @var ProductFactoryInterface $productFactory **/
$productFactory = $this->get('sylius.factory.product');

/** @var ProductInterface $product */
$product = $productFactory->createNew();
$product->setName('T-Shirt');
$product->setCode('00001');
$product->setSlug('t-shirt');

/** @var RepositoryInterface $productRepository */
$productRepository = $this->get('sylius.repository.product');

$productRepository->add($product);

并将代码(具有唯一标识符)的值设置为一个已经存在的值我得到一个异常我想获得验证消息 "Product code must be unique." 由 sylius
提供的消息 如何完成?

为此使用 Symfony Validation。对您的实体设置约束:

# config/validator/validation.yaml
App\Entity\Product:
    constraints:
        - Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity:
            fields: [code]
            message: 'Product code must be unique'

然后在 Validator 服务上调用 validate()

public function productMethod(
    ProductFactoryInterface $productFactory, 
    ValidatorInterface $validator
) {
    /** @var ProductFactoryInterface $productFactory **/
    $productFactory = $this->get('sylius.factory.product');

    /** @var ProductInterface $product */
    $product = $productFactory->createNew();
    $product->setName('T-Shirt');
    $product->setCode('00001');
    $product->setSlug('t-shirt');

    $errors = $validator->validate($product);

    if (count($errors) > 0) {
        $errorsString = (string) $errors;
        return $errorsString;
    }

    // ...do something else
}