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?