Điểm:-2

Thêm danh sách chọn vào đầu ra tableselect

lá cờ pt

Tôi đang cố gắng thêm danh sách lựa chọn vào đầu ra của một số bảng nhưng phần đánh dấu đang hiển thị dưới dạng văn bản.

tiêu đề $ = [
  'col1' => t('COL1'),
  'col2' => t('COL2'),
];
$hàng = [
  1 => [
    'col1' => 'hàng-1-ô-1',
    'col2' => 'hàng-1-ô-2',
  ],
  ['col1' => 'kiểm tra'],
  ['col2' => 'kiểm tra'],
  ['col1' => 'kiểm tra'],
  2 => [
    'col1' => 'hàng-2-ô-1',
    'col2' => $form['example_select'] = [
                  '#type' => 'chọn',
                  '#title' => $this->t('Chọn phần tử'),
                  '#options' => [
                    '1' => $this->t('Một'),
                    '2' => $this->t('Hai'),
                    '3' => $this->t('Ba'),
                  ],
                ]
  ],
];
$form['test'] = [
  '#type' => 'bảng chọn',
  '#header' => $header,
  '#options' => $hàng,
];

nhập mô tả hình ảnh ở đây

Tôi đã thử nghiệm với đoạn mã trên trong buildForm(mảng $form, FormStateInterface $form_state) chức năng của lớp điều khiển của tôi. Lớp kết xuất biểu mẫu cho một số cấu hình tùy chỉnh trong khu vực quản trị.

Ai đó có thể vui lòng giúp tôi hiểu những gì tôi cần làm để danh sách lựa chọn của tôi hiển thị dưới dạng đánh dấu thay vì văn bản không?

Điểm:1
lá cờ fr

Một số lời khuyên chung: Không gán các phím số như 1 và 2 cho các hàng của bạn - hãy để PHP tạo các khóa. Hoặc, nếu bạn thực sự cần đặt các khóa của riêng mình, thì hãy sử dụng các phím chuỗi và cung cấp cho MỌI hàng một khóa.Những gì bạn hiển thị ở trên có hàng đầu tiên được đánh số 1, sau đó hàng thứ hai, thứ ba và thứ tư không có khóa (vì vậy PHP sẽ gán chúng theo thứ tự 2, 3, 4), sau đó bạn cung cấp cho hàng thứ năm khóa 2 để ghi đè lên hàng thứ hai (có khóa được tạo tự động là 2) - do đó, bạn có bốn hàng mặc dù bạn muốn có năm hàng. Gán các phím hàng một cách nhất quán ngay từ đầu sẽ tránh được các vấn đề như thế này.

Tương tự như vậy, khi bạn làm điều gì đó như thế này:

'col2' => $form['example_select'] = [ ... ]

bạn đang thêm một phần tử biểu mẫu mới vào biểu mẫu ở HAI vị trí - một lần trong bảng và một lần bên ngoài bảng. Nếu đó là ý định của bạn, thì trước tiên hãy khai báo thành phần biểu mẫu bên ngoài bảng và chỉ sử dụng biến bên trong bảng.

Dù sao, sau đây sẽ làm những gì bạn muốn:

tiêu đề $ = [
  'col1' => $this->t('COL1'),
  'col2' => $this->t('COL2'),
];
$hàng = [];

$rows[] = [
  'col1' => 'hàng-1-ô-1',
  'col2' => 'hàng-1-ô-2',
];
$rows[] = [
  'col1' => 'hàng-2-ô-1',
  'col2' => ['dữ liệu' => [
    '#type' => 'chọn',
    '#title' => $this->t('Chọn phần tử'),
    '#options' => [
      '1' => $this->t('Một'),
      '2' => $this->t('Hai'),
      '3' => $this->t('Ba'),
    ],
  ]],
];

$form['test'] = [
  '#type' => 'bảng chọn',
  '#header' => $header,
  '#options' => $hàng,
];
lá cờ pt
Ồ! Tôi đã mệt mỏi hơn tôi nghĩ. Tôi thực sự xin lỗi vì mã lộn xộn.Tôi mệt mỏi và vội vàng, điều này dẫn đến sự lộn xộn mã đáng xấu hổ. Cảm ơn bạn vì câu trả lời. Đó chính xác là những gì 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.