【问题标题】:Sylius - return validation messages on product saveSylius - 在产品保存时返回验证消息
【发布时间】:2019-10-02 12:43:18
【问题描述】:

当我在这里使用sylius.factory.product https://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);

并将 Code 的值(具有唯一标识符)设置为已经存在的值我得到一个异常我想获得验证消息“产品代码必须是唯一的”。 sylius 提供的消息
如何完成这项工作?

【问题讨论】:

  • 你是怎么调用这个代码的?这似乎是 Symfony 表单验证的工作
  • 我只需要添加带有基本数据(名称、价格、库存)的产品,然后此代码应该(将)进入传递 dataParams 的服务
  • 对我来说,这似乎是 Validator symfony.com/doc/current/validation.html的工作

标签: symfony sylius sylius-1.3 sylius-resource


【解决方案1】:

为此使用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
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-07
    • 1970-01-01
    • 1970-01-01
    • 2019-09-28
    • 1970-01-01
    相关资源
    最近更新 更多