Điểm:1

Đặt giá trị lồng nhau trong cấu hình có thể lưu trữ

lá cờ cn

Tôi có một biểu mẫu cài đặt lưu thông tin cấu hình trên toàn trang web Chức năng biểu mẫu gửi của tôi trông giống như thế này

$dữ liệu = [];
foreach ($nhóm dưới dạng $key) {
  $data[$key] = $form_state->getValue($key);
  nếu (trống ($data[$key])) {
    $data[$key] = [];
  }
}

$this->configFactory
  ->getEditable('my_config.settings')
  ->setData($data)
  -> lưu();

Vấn đề của tôi là trong một cuộc gọi lại, tôi muốn có thể đặt trực tiếp giá trị của một trường cấu hình duy nhất được lồng trong mảng dữ liệu đó mà không cần lấy lại mọi thứ và thay đổi mảng dữ liệu và đặt lại bằng ->setData

Dữ liệu trong mảng cấu hình của tôi trông như thế này

[
    'số_chiến dịch'=> 4
    'chiến dịch'=> [
        'campaign_ids' => ['abc','def','ghi','jkl']
    ]
]

Và cuộc gọi lại của tôi trông như thế này

  hàm công khai removeField(mảng $form, FormStateInterface $form_state){
    $config = $this->getConfig();
    $num_campaigns = $config['num_campaigns']-1;
    $config_factory = $this->configFactory->getEditable('my_config.settings');
    $config_factory->set('num_campaigns', $num_campaigns);
    $config_factory->set(['campaigns','campaign_ids',$num_campaigns], '')
    $config_factory->save();
    $form_state->setRebuild();
  }

vấn đề của tôi là bộ phương thức chấp nhận một chuỗi chứ không phải một mảng. Nếu tôi chỉ có thể cung cấp một chuỗi, làm cách nào để đặt giá trị của thứ gì đó được lồng trong mảng cấu hình của tôi? Việc sử dụng set có phải là một tùy chọn không? Hay tôi phải sử dụng setData?

Điểm:2
lá cờ cn

Tham số đầu tiên là một chuỗi có các phím lồng nhau được phân tách bằng dấu chấm. Tham số thứ hai là giá trị, không nhất thiết phải là một chuỗi. Nó cũng có thể là một mảng:

$config->set('campaigns.campaign_ids', ['abc','def','ghi','jkl']);
Matt avatar
lá cờ cn
Điều đó đã làm việc cảm ơ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.