コンテンツ タイプ「ブログ投稿」を編集していて、独自のフィールド (タイプ分類法) を追加しました。ここで、これを必須フィールドにしたいので、ユーザーが新しいブログ投稿を追加するときに必須になります。
どうすればいいですか?
コンテンツ タイプ「ブログ投稿」を編集していて、独自のフィールド (タイプ分類法) を追加しました。ここで、これを必須フィールドにしたいので、ユーザーが新しいブログ投稿を追加するときに必須になります。
どうすればいいですか?
「必須」プロパティを自分で作成して処理する必要があると思います.Orchard.Fieldsプロジェクトのすべての組み込みフィールドに対してどのように行われるかを見て、これを解決できるはずです. たとえば、MediaPickerField のドライバーでは次のようになります。
protected override DriverResult Editor(ContentPart part, Fields.MediaPickerField field, IUpdateModel updater, dynamic shapeHelper) {
// if the model could not be bound, don't try to validate its properties
if (updater.TryUpdateModel(field, GetPrefix(field, part), null, null)) {
var settings = field.PartFieldDefinition.Settings.GetModel<MediaPickerFieldSettings>();
var extensions = String.IsNullOrWhiteSpace(settings.AllowedExtensions)
? new string[0]
: settings.AllowedExtensions.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries);
if (extensions.Any() && field.Url != null && !extensions.Any(x => field.Url.EndsWith(x, StringComparison.OrdinalIgnoreCase))) {
updater.AddModelError("Url", T("The field {0} must have one of these extensions: {1}", field.Name.CamelFriendly(), settings.AllowedExtensions));
}
if (settings.Required && String.IsNullOrWhiteSpace(field.Url)) {
updater.AddModelError("Url", T("The field {0} is mandatory", field.Name.CamelFriendly()));
}
}
return Editor(part, field, shapeHelper);
}
エディターが返される直前に、フィールドが必須に設定されているかどうかを確認し、設定されていて、指定されている場合は updater.AddModelError() を呼び出すことに注意してください。Taxonomy フィールドにも Required プロパティを実装する必要があると思います。