Ошибка при программном введении переведенных продуктов в Kentico, я делаю это правильно? - PullRequest
0 голосов
/ 01 февраля 2019

Для информации я установил свежую новую версию Kentico v12 и использую базовый шаблон козла.

У меня есть список продуктов в веб-сервисе (это мой источник правды), который яхотел бы внедрить в бэк-офис Kentico.

Продукты, полученные от веб-службы, связаны с языком, на котором они переведены.Если у меня есть 2 языка, скажем, голландский и французский, я получу каждый продукт 2 раза.

Практический пример:

Допустим, мой веб-сервис имеет только 1 продукт, но распознает 2 языка, когда япотреблять его я получу 2 продукта.

  • ProductId: 1, язык: NL, имя: NameTranslatedInDutch
  • ProductId: 1, язык: FR, имя: NameTranslatedInFrench

Моим идентификатором, который позволяет мне сгруппировать их, является поле "ProductId"

Для создания новой версии моего продукта для культуры я использую метод "InsertAsNewCultureVersion" из TreeNode.

Когда я его выполняю, я получаю эту ошибку:

enter image description here

Мой код:

                // I search all documents related to the ProductId received from the webservice
                var document = DocumentHelper
                         .GetDocuments()
                         .OnSite("Goat")
                         .Culture(facet.Language)
                         .Path("/", PathTypeEnum.Children)
                         .Where(
                           new WhereCondition(
                               "DocumentName",
                               QueryOperator.Equals,
                               facet.ProductId))
                         .FirstOrDefault();

                // If it already exists I only have to update it
                if (document != null)
                {
                    UpdateProductTreeNode(facet, document);
                }
                // Otherwise i need to insert a new culture version
                else
                {
                    // I search for the first possible version for my product
                    var baseDocument = (SKUTreeNode)DocumentHelper
                         .GetDocuments()
                         .OnSite("Goat")
                         .Path("/", PathTypeEnum.Children)
                         .Where(
                           new WhereCondition(
                               "DocumentName",
                               QueryOperator.Equals,
                               facet.ProductId))
                         .FirstOrDefault();

                    // I'm sure it's not null, i've already checked it above but didn't copy/paste this part 
                    baseDocument.InsertAsNewCultureVersion(facet.Language, true); // Exception occurs here

                    var newDocument = DocumentHelper
                         .GetDocuments()
                         .OnSite("Goat")
                         .Culture(facet.Language)
                         .Path("/", PathTypeEnum.Children)
                         .Where(
                           new WhereCondition(
                               "DocumentName",
                               QueryOperator.Equals,
                               facet.ProductId))
                          .FirstOrDefault();

                    UpdateProductTreeNode(facet, newDocument);
                }

Я что-то не так делаю?Должен ли я сделать это по-другому?

К сожалению, обновление структуры данных, полученных от веб-службы, не вариант.

Качество моего кода не очень хорошее, но оно не актуально,Я делаю проверку концепции, качество будет улучшено, как только я буду уверен, что это работает ^^

Я следовал этим урокам:

1 Ответ

0 голосов
/ 02 февраля 2019

Таким образом, SKUTreeNode, который вы возвращаете, относится к типу страницы cms.product и при вставке требует заполнения столбца.По умолчанию CMS.Product имеет два поля.ProductID и ProductName.

До

  • baseDocument.InsertAsNewCultureVersion(facet.Language, true)

Попробуйте

  • if (baseDocument != null) { baseDocument.SetValue("ProductName","the name of the product") }

, а затем позвоните ...

  • baseDocument.InsertAsNewCultureVersion(facet.Language, true)

Дайте мне знать, если это сработало!

...