/**
* update dynamic field
*
* @return \Xpressengine\Presenter\RendererInterface
*/
public function update(Request $request, Translator $translator)
{
/**
* @var \Xpressengine\DynamicField\DynamicFieldHandler $dynamicField
*/
$dynamicField = app('xe.dynamicField');
$inputs = $request->all();
unset($inputs['databaseName']);
/**
* @var \Xpressengine\DynamicField\RegisterHandler $registerHandler
*/
$registerHandler = $dynamicField->getRegisterHandler();
$rules = DynamicFieldSection::getRules();
$fieldType = $registerHandler->getSkin($dynamicField, $inputs['typeId']);
$fieldSkin = $registerHandler->getSkin($dynamicField, $inputs['skinId']);
$rules = array_merge($rules, $fieldType->getSettingsRules(), $fieldSkin->getSettingsRules());
$this->validate($request->instance(), $rules);
$configHandler = $dynamicField->getConfigHandler();
$config = $configHandler->get($inputs['group'], $inputs['id']);
foreach ($inputs as $name => $value) {
$config->set($name, $value);
}
$dynamicField->setConnection(XeDB::connection($request->get('databaseName')));
$dynamicField->put($config);
$row = $config->getPureAll();
$fieldType = $registerHandler->getType($dynamicField, $row['typeId']);
$fieldSkin = $registerHandler->getSkin($dynamicField, $row['skinId']);
$row['typeName'] = $fieldType->name();
$row['skinName'] = $fieldSkin->name();
$multiLang = $translator->getPreprocessorValues($inputs, session()->get('locale'));
$row['label'] = $multiLang['label'];
return XePresenter::makeApi($row);
}