Sylius - возвращать сообщения проверки при сохранении продукта
Когда я использую 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
Как это сделать?
1 ответ
Решение
Используйте для этого проверку Symfony. Установите ограничение для своей сущности:
# config/validator/validation.yaml
App\Entity\Product:
constraints:
- Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity:
fields: [code]
message: 'Product code must be unique'
А потом позвони validate()
на Validator
оказание услуг:
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
}