Sylius - return 产品保存验证消息
Sylius - return validation messages on product save
当我在这里使用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);
并将代码(具有唯一标识符)的值设置为一个已经存在的值我得到一个异常我想获得验证消息 "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
}
当我在这里使用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);
并将代码(具有唯一标识符)的值设置为一个已经存在的值我得到一个异常我想获得验证消息 "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
}