Появился кейс добавить кнопку которая ходит за данными на сторонний api и на основе данных из апи заполняет форму.
Кнопка вызывает попап с таблицей и по клику на ряд заполняет данные.
Задача оказалось простой, но как обновлять поля формы я так и не нашел в сети.
Решение оказалось простым, хотя пока в данный момент довольно сырым.
Вся идея в том, что заново создать виджет формы, а потом кусками обновить нужные поля.
public function create_onSelectSomething()
{
$id = post('id');
$something = (new Api)->getSomething($id);
$config = $this->makeConfig('$/namespace/pluginName/models/modelName/fields.yaml');
$config->model = new ModelName();
$config->arrayName = 'ModelName'; // это нужно для того, чтоб форма генерировала name для импутов в виде name="ModelName[inputName]"
$data = [
'name' => $something['name'],
'slug' => str_slug($something['name']),
];
$config->data = $data; // Можно так задать новые значения или же
$widget = $this->makeWidget('Backend\Widgets\Form', $config);
// $widget->setFormValues($data);
return [
"#Form-field-ModelName-slug-group" => $widget->renderField('slug', ['useContainer' => false]), // отключаем генерацию контейнера, потому, что мы заменяет то, что внутри *-group, а не сам group
'#Form-field-ModelName-name-group' => $widget->renderField('name', ['useContainer' => false]),
];
}