/** * 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); }