Điểm:0

Custom validation constraints multi value paragraphs : how to get weight value

lá cờ nl

I am validating a multi value paragraph field using constraints.

/**
 * Implements hook_entity_bundle_field_info_alter().
 */
function cnfpt_internet_entity_bundle_field_info_alter(&$fields, \Drupal\Core\Entity\EntityTypeInterface $entity_type, $bundle) {
  if ($bundle === 'manifestation') {
    if (isset($fields['field_occurence'])) {
      // Add a validation.
      $fields['field_occurence']->addConstraint('Occurrence', []);
    }
  }
}
/**
 * Checks the mandatory fields of an occurence and ordere of the occurrences.
 *
 * @Constraint(
 *   id = "Occurrence",
 *   label = @Translation("Champ obligatoire par type d'occurence", context = "Validation"),
 *   type = "item"
 * )
 */
class OccurrenceConstraint extends Constraint {

  // Modalité requise pour occurrence distante.
  public $modaliteRequise = 'Le champ Modalité est requis';

  // Ville requise pour occurrence presentiel.
  public $villeRequise = 'Le champ Ville est requis';

  // Order of occurence
  public $ordreOccurrence = 'Les occurrences doivent être placées dans l\'ordre chronologique';

  // First occurence needs a contact.
  public $premiereOccurrenceContact = 'Un contact est obligatoire pour la première occurence';
}

field_occurence ist the paragraph field

My validate method starts like

 * Validates the Occurrence constraint.
 */
class OccurrenceConstraintValidator extends ConstraintValidator {
  /**
   * {@inheritdoc}
   */
  public function validate($items, Constraint $constraint) {

I have to make a validation taking into account the order of the paragraphs. If the paragraph is ordered with drag&drop there is no issue, I can take the delta value of items.

But if the weight is modified manually, I don't see how to get the modified weight value.

Any idea how to get the manually modified weight value?

Thanks Rainer

lá cờ cn
Khi bạn nói "trọng lượng được sửa đổi thủ công" - điều đó xảy ra chính xác như thế nào? Kéo và thả chỉ là một lớp JS trên các lựa chọn trọng số, nó cập nhật các lựa chọn tương tự đó để gửi biểu mẫu và vì các mục trường không lưu trữ "trọng số" ngoài đồng bằng, tôi đã cho rằng trọng số và đồng bằng là một và giống nhau (về thứ tự sắp xếp) trong mọi ngữ cảnh. Có cơ chế nào khác mà bạn có thể sử dụng để chuyển/đặt trọng số của mục trường không?
abelass avatar
lá cờ nl
Với tính năng kéo và thả được triển khai nguyên bản trong Drupal. Bạn luôn có tùy chọn chuyển sang quản lý thủ công thứ tự các mặt hàng để điều chỉnh trọng lượng thông qua trường trọng lượng.Khi bạn giả định chính xác, trọng số sau đó được sử dụng để tính toán lại đồng bằng và không được lưu trữ. Khi xác thực biểu mẫu, tôi cần nhận các giá trị trọng số đã gửi trong trường hợp không kéo và thả nhưng chúng dường như không thể truy cập được.
lá cờ cn
Tôi nghi ngờ rằng nó sẽ khả dụng mà không cần hack trong quá trình xác thực, các ràng buộc có thể cần phải có khả năng xác thực mà không bị ảnh hưởng từ bên ngoài vì chúng có thể được gọi mà không cần liên quan đến biểu mẫu. Nhưng trọng lượng đó cung cấp cho bạn thông tin gì mà bạn không thể suy ra từ đồng bằng? Hiểu những gì bạn đang cố gắng làm ít nhất có thể giúp đề xuất một giải pháp thay thế nếu không có câu trả lời trực tiếp dễ dàng cho câu hỏi
abelass avatar
lá cờ nl
Cảm ơn @Clive, tôi cần kiểm tra thứ tự so với ngày của mục đoạn văn để chắc chắn rằng mục hàng đầu luôn là mục mới nhất. Đây là một tính năng lịch sử từ ứng dụng trong d7. Nhưng sau khi suy ngẫm thêm, tốt hơn hết tôi nên sắp xếp lại theo ngày sau khi gửi, dù sao thì cách này cũng thân thiện với người dùng hơn.
Điểm:0
lá cờ nl

Trong khi chờ đợi tôi tìm thấy hướng dẫn này https://philfrilling.com/blog/2018-09/custom-validation-multiple-dependent-entity-fields-drupal-8 điều đó sẽ giải quyết được vấn đề của tôi. Đặt giới hạn trên toàn bộ thực thể thay vì trường chỉ cấp quyền truy cập vào thông tin tôi cần.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.