0

我有一个要求,例如当用户单击“发布项目”按钮时,我想执行一些自定义代码,在其中我将对当前项目运行一些验证,如果一切正常,则将发布该项目,否则将显示警报并应该禁用发布管道。

因此,为此我在 publishItem 管道下创建了自定义处理器,一切正常,但是当我显示警报时,它给了我空引用异常。

Sitecore.Context.ClientPage.ClientResponse.Alert(message);

我不确定我在这里做错了什么,还有其他方法可以实现这一点...请建议以下是我编写的示例代码 下面的类是从PublishItemProcessor继承的。

public override void Process(PublishItemContext context)
        {
            Assert.ArgumentNotNull(context, "context");

            // code goes here

            if (condition)
            {
                string message = "Required fields are missing";
                context.AbortPipeline();                
                Sitecore.Context.ClientPage.ClientResponse.Alert(message);
            }
        }

<publishItem>
      <processor type="Namespace.CheckRequiredChildItems, Namespace" />
</publishItem>
4

1 回答 1

2

您应该避免更改发布管道,因为这可能会阻止您将来升级到 Sitecore 发布服务。作为一般原则,任何用户都应该能够随时发布任何项目。Sitecore 发布限制和工作流程将防止发布未完成/无效的项目。一个项目也可以通过许多不同的方式发布,例如项目发布(如您描述的场景中)、作为相关项目、站点发布等。发布也可能在后台运行,因此 UI 交互不适合。

您应该为此使用工作流,因为其目的之一是防止项目在不满足验证规则的情况下达到其可发布状态。如果您的编辑不想使用工作流程,您仍然可以几乎无缝地使用它。您可以拥有一个只有两种状态(草稿和准备发布)的简单工作流程。然后,您可以让作者通过工作流转换项目,或使用自动工作流操作将其转换到下一步。失败的验证规则将阻止它被转换。

于 2020-12-31T09:00:25.513 回答