Điểm:0

Xác thực cho đầu vào radio không hoạt động với tôi

lá cờ il

Tôi đang tạo biểu mẫu với api biểu mẫu drupal. Xác thực hoạt động tốt cho tất cả các lĩnh vực khác của tôi. Nhưng bây giờ tôi cũng đã bắt đầu thử và làm việc với các nút radio. Không có vấn đề gì nếu tôi nhấp vào tùy chọn radio, xác thực luôn trả về 'màu được yêu cầu'.

// Mã phương thức xây dựng biểu mẫu
$form['ngày sinh'] = [
  '#type' => 'ngày',
  '#title' => $this->t('Ngày sinh của bạn'),
  '#date_date_format' => 'd-m-Y',
];

$form['color_select'] = [
  '#type' => 'radio',
  '#title' => $this->t('Chọn màu'),
  '#options' => [
    'màu xanh' => $this->t('Màu xanh'),
    'trắng' => $this->t('Trắng'),
    'đen' => $this->t('Đen'),
    // 'khác' => $this->t('Other'),
  ],
  '#thuộc tính' => [
    'id' => 'color_select',
    'tên' => 'trường_màu_chọn',
  ],
  '#states' => [
    'đã bật' => [
      ':input[name="field_custom_color"]' => ['value' => ''],
    ],
  ],
];

// Mã phương thức trình xác thực biểu mẫu
if ($form_state->getValue('ngày sinh') == '') {
  $form_state->setErrorByName('ngày sinh', $this->t('Bắt buộc phải có ngày sinh'));
}
if ($form_state->getValue('color_select') == '') {
  $form_state->setErrorByName('color_select', $this->t('Màu được yêu cầu'));
}

Tôi nghĩ rằng getValue(name) và setErrorByname(name) phải giống như $form[name] =[]; để làm cho nó hoạt động, nhưng đối với trường nút radio thì không.

lá cờ cn
Bạn có biết về mô-đun Ví dụ không? Có một ví dụ về radio (và nhiều phần khác của Form API) trong mô-đun con `form_api_example`: https://www.drupal.org/project/examples
Jorn Reed avatar
lá cờ il
@PatrickKenny không, tôi không biết điều đó haha. Tôi sẽ xem qua một chút!
Điểm:0
lá cờ il

Tôi quản lý để làm cho nó hoạt động như thế này:

$form['color_select'] = [
  '#type' => 'radio',
  '#title' => $this->t('Chọn màu'),
  '#options' => [
    'màu xanh' => $this->t('Màu xanh'),
    'trắng' => $this->t('Trắng'),
    'đen' => $this->t('Đen'),
    // 'khác' => $this->t('Other'),
  ],
  '#thuộc tính' => [
    'id' => 'color_select',
    'tên' => 'màu_chọn',
  ],
  '#states' => [
    'đã kiểm tra' => [
      ':input[name="color_select"]' => [
        ['giá trị' => 'màu xanh'],
        'hoặc',
        ['giá trị' => 'trắng'],
        'hoặc',
        ['giá trị' => 'đen'],
      ],
    ],
  ],
];

Mặc dù tôi không chắc nó hoạt động như thế nào bây giờ. Nó có thực sự đặt nút radio được chọn khi giá trị là một trong những giá trị đã cho không?

Đă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.